0.1 Graph cube

This commit is contained in:
PedroEdiaz
2024-09-04 22:35:31 +00:00
commit cce685d90c
12 changed files with 675 additions and 0 deletions

67
src/shader.c Normal file
View 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 );
}