+static inline void
+writeCurrentProgramObj(JSONWriter &json)
+{
+ GLhandleARB programObj = glGetHandleARB(GL_PROGRAM_OBJECT_ARB);
+ if (!programObj) {
+ return;
+ }
+
+ GLint attached_shaders = 0;
+ glGetProgramivARB(programObj, GL_OBJECT_ATTACHED_OBJECTS_ARB, &attached_shaders);
+ if (!attached_shaders) {
+ return;
+ }
+
+ GLhandleARB *shaderObjs = new GLhandleARB[attached_shaders];
+ GLsizei count = 0;
+ glGetAttachedObjectsARB(programObj, attached_shaders, &count, shaderObjs);
+ for (GLsizei i = 0; i < count; ++ i) {
+ writeShaderObj(json, shaderObjs[i]);
+ }
+ delete [] shaderObjs;
+}
+