101 lines
1.6 KiB
C
101 lines
1.6 KiB
C
#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 <stdio.h>
|
|
|
|
#include <GL/glx.h>
|
|
|
|
#include <GL/gl.h>
|
|
|
|
#include <GL/glext.h>
|
|
|
|
#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;
|
|
|
|
|
|
|