forming the skeleton

This commit is contained in:
2025-06-21 21:36:32 -04:00
parent 3bedd81d96
commit ea2e7e918c
22 changed files with 921 additions and 309 deletions

View File

@@ -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);
}