|
|
|
|
@ -16,7 +16,6 @@
|
|
|
|
|
#include "util.h" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// NOTE: forward declarations
|
|
|
|
|
|
|
|
|
|
const std::string dumpTextFile(const char* filepath); |
|
|
|
|
@ -77,7 +76,7 @@ addShaderProgram(memory_arena* arena,
|
|
|
|
|
s->name = arenaCopyCStr(arena, name); |
|
|
|
|
s->hash = hash; |
|
|
|
|
|
|
|
|
|
// TODO: replace std::string w/ utilAllocCStr() ?
|
|
|
|
|
// TODO: replace std::string w/ utilAllocateCStr() ?
|
|
|
|
|
std::string vert = dumpTextFile(vs); |
|
|
|
|
std::string frag = dumpTextFile(fs); |
|
|
|
|
GLuint vs_id, fs_id; |
|
|
|
|
@ -227,6 +226,38 @@ loadGLMesh(shader_program* s,
|
|
|
|
|
return gm; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
GLVertexAttrib* |
|
|
|
|
getVertexAttribByName(shader_program* shader, const char* name) |
|
|
|
|
{ |
|
|
|
|
for (u32 i = 0; i < shader->num_vertex_attribs; i++) { |
|
|
|
|
if (strncmp(shader->vertex_attribs[i].name, name, 256) == 0) |
|
|
|
|
return &shader->vertex_attribs[i]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
printf("%s, attribute: %s, not found on shader: %s\n", |
|
|
|
|
__FUNCTION__, name, shader->name); |
|
|
|
|
return nullptr; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
GLmesh |
|
|
|
|
loadGLMesh(shader_program* s, |
|
|
|
|
const mesh& m, |
|
|
|
|
GLenum draw_mode, |
|
|
|
|
const glm::vec3& pos, |
|
|
|
|
u32 num_mappings, |
|
|
|
|
GLBufferToAttribMapping mappings[]) |
|
|
|
|
{ |
|
|
|
|
GLmesh glm = {0}; |
|
|
|
|
#if 0 |
|
|
|
|
// TODO: store gl_buffers on gl_ctx
|
|
|
|
|
// TODO: loop over mapping array to get buffer attrib info
|
|
|
|
|
WRONG! gl_ctx->num_vertex_buffers = num_mappings; |
|
|
|
|
gl_ctx->vertex_buffers = ... |
|
|
|
|
for (u32 i = 0; i < num_mappings; i++) { |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
return glm; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// NOTE: internal
|
|
|
|
|
|
|
|
|
|
@ -438,10 +469,9 @@ bool
|
|
|
|
|
parseAttributes(memory_arena* arena, shader_program* s, GLContext* gl_ctx) |
|
|
|
|
{ |
|
|
|
|
printf("\n---------------------------------\n"); |
|
|
|
|
printf("%s(), FIXME: dumping attrib info for programe: %s\n", |
|
|
|
|
printf("%s(), FIXME: dumping attrib info for program: %s\n", |
|
|
|
|
__FUNCTION__, s->name); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GLint num_attribs; |
|
|
|
|
glGetProgramiv(s->prog_id, GL_ACTIVE_ATTRIBUTES, &num_attribs); |
|
|
|
|
printf("active attributes: %d\n", num_attribs); |
|
|
|
|
@ -449,7 +479,7 @@ parseAttributes(memory_arena* arena, shader_program* s, GLContext* gl_ctx)
|
|
|
|
|
s->num_vertex_attribs = num_attribs; |
|
|
|
|
s->vertex_attribs = ARENA_ALLOC(arena, GLVertexAttrib, num_attribs); |
|
|
|
|
|
|
|
|
|
GLchar attrib_name[256] = {0} ; |
|
|
|
|
GLchar attrib_name[256] = {0}; |
|
|
|
|
GLsizei length; |
|
|
|
|
GLint size; |
|
|
|
|
GLenum type; |
|
|
|
|
|