Browse Source

add updateGLBuffer as generic helper

main
cinnaboot 4 years ago
parent
commit
a44971ae40
  1. 12
      src/main.cpp
  2. 7
      src/shader.cpp
  3. 2
      src/shader.h

12
src/main.cpp

@ -28,10 +28,7 @@ loadLights(RenderState* rs)
GLBuffer* lights_ubo = getUBOByName(rs->gl_ctx, "lights");
assert(lights_ubo != nullptr);
// FIXME: we need an interface function to update lights
glBindBuffer(lights_ubo->target, lights_ubo->id);
glBufferSubData(lights_ubo->target, 0, lb->buf_size, lb->buffer);
updateGLBuffer(lights_ubo, lb->buffer);
// NOTE: add a debug mesh to view the point light source
RenderGroup* debug_group = getFreeRenderGroup(rs);
@ -117,7 +114,7 @@ loadScene(RenderState* rs)
rs->xforms->view_xform = glm::lookAt(cam_pos, look_pos, up);
GLBuffer* xforms_ubo = getUBOByName(rs->gl_ctx, "matrices");
assert(xforms_ubo);
updateCameraTransforms(rs->xforms, xforms_ubo);
updateGLBuffer(xforms_ubo, rs->xforms);
return loadLights(rs);
}
@ -160,8 +157,7 @@ render_cb_pre(RenderState* rs)
// FIXME: we need an interface function to update lights
GLBuffer* lights_ubo = getUBOByName(rs->gl_ctx, "lights");
assert(lights_ubo);
glBindBuffer(lights_ubo->target, lights_ubo->id);
glBufferSubData(lights_ubo->target, 0, lb->buf_size, lb->buffer);
updateGLBuffer(lights_ubo, lb->buffer);
// NOTE: orbit camera
static glm::vec4 cam_pos;
@ -187,7 +183,7 @@ render_cb_pre(RenderState* rs)
assert(xform_ubo != nullptr);
}
updateCameraTransforms(rs->xforms, xform_ubo);
updateGLBuffer(xform_ubo, rs->xforms);
// NOTE: rotate cubes
RenderGroup* rg2 = getRenderGroupByName(rs, "textured_cubes");

7
src/shader.cpp

@ -223,10 +223,11 @@ getGLTexture(GLContext* gl_ctx, Texture* diffuse_img)
}
void
updateCameraTransforms(Transforms* xforms, GLBuffer* xform_ubo)
updateGLBuffer(GLBuffer* gl_buf, void* data)
{
glBindBuffer(xform_ubo->target, xform_ubo->id);
glBufferSubData(xform_ubo->target, 0, sizeof(*xforms), xforms);
assert(gl_buf && data);
glBindBuffer(gl_buf->target, gl_buf->id);
glBufferSubData(gl_buf->target, 0, gl_buf->data_size, data);
}
void

2
src/shader.h

@ -183,7 +183,7 @@ GLBuffer* getUBOByName(GLContext* gl_ctx, const char* name);
GLTexture* getGLTexture(GLContext* gl_ctx, Texture* diffuse_img);
void updateCameraTransforms(Transforms* xforms, GLBuffer* xform_ubo);
void updateGLBuffer(GLBuffer* gl_buf, void* data);
void renderVAO(GLMesh* glmesh,
glm::mat4* node_xform,

Loading…
Cancel
Save