|
|
|
|
@ -157,11 +157,12 @@ parseUniform(memory_arena* arena, shader_program* s, u32 uniform_idx)
|
|
|
|
|
{ |
|
|
|
|
gl_uniform unif = {0}; |
|
|
|
|
GLchar unif_name[256] = {0}; |
|
|
|
|
GLsizei name_len = 0; |
|
|
|
|
|
|
|
|
|
glGetActiveUniform(s->prog_id, |
|
|
|
|
uniform_idx, |
|
|
|
|
sizeof(unif_name), |
|
|
|
|
&unif.name_len, |
|
|
|
|
&name_len, |
|
|
|
|
&unif.num_elements, |
|
|
|
|
&unif.data_type, |
|
|
|
|
unif_name); |
|
|
|
|
@ -171,10 +172,7 @@ parseUniform(memory_arena* arena, shader_program* s, u32 uniform_idx)
|
|
|
|
|
unif.idx = uniform_idx; |
|
|
|
|
unif.data_size = getGLTypeSize(unif.data_type); |
|
|
|
|
assert(unif.data_size > 0); |
|
|
|
|
unif.name_len += 1; // NOTE: gl param dosen't account for null terminator
|
|
|
|
|
unif.name = |
|
|
|
|
(char*) arenaAllocateBlock(arena, (unif.name_len) * sizeof(char)); |
|
|
|
|
std::strncpy(unif.name, unif_name, unif.name_len); |
|
|
|
|
unif.name = arenaCopyCStr(arena, unif_name); |
|
|
|
|
unif.location = glGetUniformLocation(s->prog_id, unif.name); |
|
|
|
|
|
|
|
|
|
if (unif.data_size == 0) |
|
|
|
|
@ -301,13 +299,7 @@ initTransforms(memory_arena* arena,
|
|
|
|
|
xform_ubo->target = GL_UNIFORM_BUFFER; |
|
|
|
|
xform_ubo->data_type = GL_FLOAT; |
|
|
|
|
xform_ubo->data_size = sizeof(*xforms); |
|
|
|
|
|
|
|
|
|
// TODO: make an arenaAddCStr(arena, char*& str_ref) for this nonsense
|
|
|
|
|
const char* block_name = "matrices"; |
|
|
|
|
u32 name_len = std::strlen(block_name) + 1; |
|
|
|
|
xform_ubo->name = (char*) arenaAllocateBlock(arena, name_len); |
|
|
|
|
std::strncpy(xform_ubo->name, block_name, name_len); |
|
|
|
|
// END TODO:
|
|
|
|
|
xform_ubo->name = arenaCopyCStr(arena, "matrices"); |
|
|
|
|
|
|
|
|
|
glBindBuffer(xform_ubo->target, xform_ubo->id); |
|
|
|
|
glBufferData(xform_ubo->target, sizeof(*xforms), xforms, |
|
|
|
|
|