|
|
|
@ -253,13 +253,13 @@ loadScene(RenderState* rs) |
|
|
|
assert(tex_cube != nullptr); |
|
|
|
assert(tex_cube != nullptr); |
|
|
|
const mesh& texmesh = tex_cube->meshes[0]; |
|
|
|
const mesh& texmesh = tex_cube->meshes[0]; |
|
|
|
|
|
|
|
|
|
|
|
GLVertexAttrib* pos_attrib = getVertexAttribByName(s_debug, "position"); |
|
|
|
GLVertexAttrib* db_pos_attrib = getVertexAttribByName(s_debug, "position"); |
|
|
|
GLVertexAttrib* normal_attrib = getVertexAttribByName(s_debug, "normal"); |
|
|
|
GLVertexAttrib* db_normal_attrib = getVertexAttribByName(s_debug, "normal"); |
|
|
|
if (!pos_attrib || !normal_attrib) return false; |
|
|
|
if (!db_pos_attrib || !db_normal_attrib) return false; |
|
|
|
|
|
|
|
|
|
|
|
GLBufferToAttribMapping attrib_mappings[2] = { |
|
|
|
GLBufferToAttribMapping debug_mappings[2] = { |
|
|
|
{ "position", pos_attrib, texmesh.vertices }, |
|
|
|
{ "position", db_pos_attrib, texmesh.vertices }, |
|
|
|
{ "normal", normal_attrib, texmesh.normals } |
|
|
|
{ "normal", db_normal_attrib, texmesh.normals } |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
const u32 NUM_CUBES = 4; |
|
|
|
const u32 NUM_CUBES = 4; |
|
|
|
@ -280,7 +280,7 @@ loadScene(RenderState* rs) |
|
|
|
assert(e != nullptr); |
|
|
|
assert(e != nullptr); |
|
|
|
|
|
|
|
|
|
|
|
if (!initEntity(e, rs->gl_ctx, rs->rg_arena, tex_cube, |
|
|
|
if (!initEntity(e, rs->gl_ctx, rs->rg_arena, tex_cube, |
|
|
|
2, attrib_mappings, "debug_box")) |
|
|
|
2, debug_mappings, "debug_box")) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// FIXME: this doesn't actually do anything
|
|
|
|
// FIXME: this doesn't actually do anything
|
|
|
|
freeRenderGroup(orange_cubes, rs->rg_arena); |
|
|
|
freeRenderGroup(orange_cubes, rs->rg_arena); |
|
|
|
@ -296,10 +296,19 @@ loadScene(RenderState* rs) |
|
|
|
"orange_cubes"); |
|
|
|
"orange_cubes"); |
|
|
|
Entity* e = getFreeEntity(debug_cube_group); |
|
|
|
Entity* e = getFreeEntity(debug_cube_group); |
|
|
|
assert(e != nullptr); |
|
|
|
assert(e != nullptr); |
|
|
|
// FIXME: this a bug, we're reusing the attrib_mappings from the debug
|
|
|
|
|
|
|
|
// shader for the default shader, which could have different attributes
|
|
|
|
GLVertexAttrib* df_pos_attrib = |
|
|
|
|
|
|
|
getVertexAttribByName(s_default, "position"); |
|
|
|
|
|
|
|
GLVertexAttrib* df_uv_attrib = getVertexAttribByName(s_default, "uv"); |
|
|
|
|
|
|
|
if (!df_pos_attrib || !df_uv_attrib) return false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GLBufferToAttribMapping default_mappings[2] = { |
|
|
|
|
|
|
|
{ "position", df_pos_attrib, texmesh.vertices }, |
|
|
|
|
|
|
|
{ "uvs", df_uv_attrib, texmesh.uvs } |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
initEntity(e, rs->gl_ctx, rs->rg_arena, tex_cube, |
|
|
|
initEntity(e, rs->gl_ctx, rs->rg_arena, tex_cube, |
|
|
|
2, attrib_mappings, "orange_box"); |
|
|
|
2, default_mappings, "textured_box"); |
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|