|
|
|
|
@ -1,4 +1,5 @@
|
|
|
|
|
|
|
|
|
|
#include <cassert> |
|
|
|
|
#include <cstring> |
|
|
|
|
#include <iostream> |
|
|
|
|
|
|
|
|
|
@ -230,6 +231,42 @@ initGraphics(SDLHandles* handles)
|
|
|
|
|
return handles->window != nullptr; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool |
|
|
|
|
addShaders(RenderState* rs) |
|
|
|
|
{ |
|
|
|
|
if (!addShaderProgram(rs->arena, |
|
|
|
|
rs->gl_ctx, |
|
|
|
|
"../data/shader.vert", |
|
|
|
|
"../data/shader.frag", |
|
|
|
|
"default")) |
|
|
|
|
{ |
|
|
|
|
LOG(Error) << "error loading default shader\n"; |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!addShaderProgram(rs->arena, |
|
|
|
|
rs->gl_ctx, |
|
|
|
|
"../data/colored_vertices.vert", |
|
|
|
|
"../data/colored_vertices.frag", |
|
|
|
|
"colored_vertices")) |
|
|
|
|
{ |
|
|
|
|
LOG(Error) << "error loading colored_vertices shader\n"; |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!addShaderProgram(rs->arena, |
|
|
|
|
rs->gl_ctx, |
|
|
|
|
"../data/debug.vert", |
|
|
|
|
"../data/debug.frag", |
|
|
|
|
"debug")) |
|
|
|
|
{ |
|
|
|
|
LOG(Error) << "error loading debug shader\n"; |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool |
|
|
|
|
loadScene(RenderState* rs) |
|
|
|
|
{ |
|
|
|
|
@ -242,10 +279,10 @@ loadScene(RenderState* rs)
|
|
|
|
|
glm::vec3( 10, -10, 0), |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// TODO: load debug shader from libTangerine for textured_cube
|
|
|
|
|
shader_program* s = getShaderByName("default", rs->gl_ctx); |
|
|
|
|
shader_program* s_default = getShaderByName("default", rs->gl_ctx); |
|
|
|
|
shader_program* s_debug = getShaderByName("debug", rs->gl_ctx); |
|
|
|
|
|
|
|
|
|
if (!s) |
|
|
|
|
if (!s_default || !s_debug) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
// TODO: full lighting model
|
|
|
|
|
@ -254,7 +291,7 @@ loadScene(RenderState* rs)
|
|
|
|
|
GLmesh* texmesh = getFreeGLMesh(rs); |
|
|
|
|
|
|
|
|
|
if (texmesh) { |
|
|
|
|
*texmesh = loadGLMesh(s, tex_cube->meshes[0], |
|
|
|
|
*texmesh = loadGLMesh(s_debug, tex_cube->meshes[0], |
|
|
|
|
GL_TRIANGLES, glm::vec3(0, 0, 0)); |
|
|
|
|
*texmesh->model_xform = glm::mat4(1.f); |
|
|
|
|
|
|
|
|
|
@ -271,7 +308,7 @@ loadScene(RenderState* rs)
|
|
|
|
|
if (!gmesh) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
*gmesh = loadGLMesh(s, cube, GL_TRIANGLES, cube_locs[i]); |
|
|
|
|
*gmesh = loadGLMesh(s_default, cube, GL_TRIANGLES, cube_locs[i]); |
|
|
|
|
|
|
|
|
|
if (gmesh->vao_id == 0) |
|
|
|
|
return false; |
|
|
|
|
@ -343,25 +380,13 @@ main()
|
|
|
|
|
gl_buffer& ubo = rs->gl_ctx->uniform_buffers[rs->gl_ctx->num_ubos++]; |
|
|
|
|
initTransforms(arena, rs->xforms, &ubo, rs->gl_ctx); |
|
|
|
|
|
|
|
|
|
if (!addShaderProgram(arena, |
|
|
|
|
rs->gl_ctx, |
|
|
|
|
"../data/shader.vert", |
|
|
|
|
"../data/shader.frag", |
|
|
|
|
"default")) |
|
|
|
|
{ |
|
|
|
|
if (!addShaders(rs)) { |
|
|
|
|
LOG(Error) << "error loading shaders\n"; |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!addShaderProgram(arena, |
|
|
|
|
rs->gl_ctx, |
|
|
|
|
"../data/colored_vertices.vert", |
|
|
|
|
"../data/colored_vertices.frag", |
|
|
|
|
"colored_vertices")) |
|
|
|
|
{ |
|
|
|
|
LOG(Error) << "error loading shaders\n"; |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
shader_program* s_debug = getShaderByName("debug", rs->gl_ctx); |
|
|
|
|
dumpShader(s_debug->prog_id); |
|
|
|
|
|
|
|
|
|
if (!loadScene(rs)) { |
|
|
|
|
LOG(Error) << "error loading scene\n"; |
|
|
|
|
|