0.1 Graph cube
This commit is contained in:
67
src/shader.c
Normal file
67
src/shader.c
Normal file
@@ -0,0 +1,67 @@
|
||||
#define GL_GLEXT_PROTOTYPES
|
||||
#include <GL/gl.h>
|
||||
#include "main.h"
|
||||
|
||||
#define NULL ((void*)0)
|
||||
|
||||
void destroy_shader( unsigned int shader )
|
||||
{
|
||||
return glDeleteProgram( shader );
|
||||
}
|
||||
|
||||
unsigned int create_shader( void )
|
||||
{
|
||||
return glCreateProgram();
|
||||
}
|
||||
|
||||
void use_shader( unsigned int program )
|
||||
{
|
||||
return glUseProgram( program );
|
||||
}
|
||||
|
||||
unsigned char gload_program( unsigned int program, const char * src,
|
||||
unsigned int i )
|
||||
{
|
||||
int shader, status;
|
||||
unsigned int type[] =
|
||||
{
|
||||
[VERTEX]=GL_VERTEX_SHADER,
|
||||
[FRAGMENT]=GL_FRAGMENT_SHADER
|
||||
};
|
||||
|
||||
|
||||
if( !src )
|
||||
return 0;
|
||||
|
||||
shader = glCreateShader(type[i]);
|
||||
glShaderSource( shader, 1, (const GLchar **)&src, NULL);
|
||||
glCompileShader(shader);
|
||||
glGetShaderiv( shader, GL_COMPILE_STATUS, &status );
|
||||
|
||||
|
||||
if( !status )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
char log[256];
|
||||
glGetShaderInfoLog( shader, 256, NULL, log );
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
glAttachShader(program, shader);
|
||||
glDeleteShader(shader);
|
||||
glLinkProgram(program);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void gload_float( unsigned int program, char * var, float f )
|
||||
{
|
||||
glUseProgram( program );
|
||||
glUniform1f( glGetUniformLocation( program, var ), f );
|
||||
}
|
||||
|
||||
void gload_mat4( unsigned int program, char * var, float * mat )
|
||||
{
|
||||
glUseProgram( program );
|
||||
glUniformMatrix4fv( glGetUniformLocation( program, var ), 1, 0, mat );
|
||||
}
|
||||
Reference in New Issue
Block a user