#ifndef _program #define _program // Macros #define GL_GLEXT_PROTOTYPES #include "stdlib.h" extern char * __ClassNames[]; // Includes #include "shader.h" #include "sampler2D.h" #include "../char.h" #include "../array.h" #include "fileSystem.h" #include #include #include #include #include "uniform.h" #include "member.h" #include "block.h" typedef struct program{ GLuint samplerIndex; array * uniforms; array * attributes; array * blocks; array * shaders; GLuint glProgram; } program; void program_addShader( program * this, struct shader * shaderInstance ); GLint program_glGetProgramResourceiv( program * this, GLint programProperty, GLint index, GLint Property ); GLchar * program_glGetProgramResourceName( program * this, GLint programProperty, GLint index, GLint nameLength ); void program_extractBlocks( program * this ); struct block * program_createNewBlock( program * this, char * blockName ); struct block * program_getBlock( program * this, char * blockName ); void program_create( program * this ); void program_bindBlock( program * this, char * blockName ); void program_use( program * this ); void program_extractUniforms( program * this ); void program_extractAttributes( program * this ); struct attribute * program_getAttributeByName( program * this, char * attributeName ); void program_setUniform( program * this, char * name, void * value ); void program_updateSampler2D( program * this, uniform * currentUniform, void * value ); program program_new( ); program * program_newPointer( ); #endif typedef struct program program;