forming the skeleton
This commit is contained in:
@@ -1,24 +1,24 @@
|
||||
#include "shader.h"
|
||||
|
||||
static bool _shader_compile(GLuint handle, const char* text);
|
||||
static bool _shader_compile(GLuint* self, const char* text);
|
||||
|
||||
static bool
|
||||
_shader_compile(GLuint handle, const char* text)
|
||||
_shader_compile(GLuint* self, const char* text)
|
||||
{
|
||||
char compileLog[SHADER_BUFFER_MAX];
|
||||
s32 isCompile;
|
||||
|
||||
const GLchar* source = text;
|
||||
|
||||
glShaderSource(handle, 1, &source, NULL);
|
||||
glShaderSource(*self, 1, &source, NULL);
|
||||
|
||||
glCompileShader(handle);
|
||||
glGetShaderiv(handle, GL_COMPILE_STATUS, &isCompile);
|
||||
glCompileShader(*self);
|
||||
glGetShaderiv(*self, GL_COMPILE_STATUS, &isCompile);
|
||||
|
||||
if (!isCompile)
|
||||
{
|
||||
glGetShaderInfoLog(handle, SHADER_BUFFER_MAX, NULL, compileLog);
|
||||
printf(STRING_ERROR_SHADER_INIT, handle, compileLog);
|
||||
glGetShaderInfoLog(*self, SHADER_BUFFER_MAX, NULL, compileLog);
|
||||
printf(STRING_ERROR_SHADER_INIT, *self, compileLog);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -26,47 +26,39 @@ _shader_compile(GLuint handle, const char* text)
|
||||
}
|
||||
|
||||
bool
|
||||
shader_init(Shader* self, const char* vertex, const char* fragment)
|
||||
shader_init(GLuint* self, const char* vertex, const char* fragment)
|
||||
{
|
||||
GLuint vertexHandle;
|
||||
GLuint fragmentHandle;
|
||||
bool isSuccess;
|
||||
|
||||
memset(self, '\0', sizeof(Shader));
|
||||
|
||||
vertexHandle = glCreateShader(GL_VERTEX_SHADER);
|
||||
fragmentHandle = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
|
||||
if
|
||||
(
|
||||
!_shader_compile(vertexHandle, vertex) ||
|
||||
!_shader_compile(fragmentHandle, fragment)
|
||||
!_shader_compile(&vertexHandle, vertex) ||
|
||||
!_shader_compile(&fragmentHandle, fragment)
|
||||
)
|
||||
return false;
|
||||
|
||||
self->handle = glCreateProgram();
|
||||
*self = glCreateProgram();
|
||||
|
||||
glAttachShader(self->handle, vertexHandle);
|
||||
glAttachShader(self->handle, fragmentHandle);
|
||||
glAttachShader(*self, vertexHandle);
|
||||
glAttachShader(*self, fragmentHandle);
|
||||
|
||||
glLinkProgram(self->handle);
|
||||
glLinkProgram(*self);
|
||||
|
||||
glDeleteShader(vertexHandle);
|
||||
glDeleteShader(fragmentHandle);
|
||||
|
||||
printf(STRING_INFO_SHADER_INIT, self->handle);
|
||||
printf(STRING_INFO_SHADER_INIT, *self);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
shader_use(Shader* self)
|
||||
shader_free(GLuint* self)
|
||||
{
|
||||
glUseProgram(self->handle);
|
||||
}
|
||||
|
||||
void
|
||||
shader_free(Shader* self)
|
||||
{
|
||||
glDeleteProgram(self->handle);
|
||||
}
|
||||
glDeleteProgram(*self);
|
||||
}
|
Reference in New Issue
Block a user