Browse Source

remove color_buffer from render_group

master
cinnaboot 8 years ago
parent
commit
e85ca24423
  1. 4
      data/default.fs
  2. 9
      data/default.vs
  3. 40
      src/render_group.cpp
  4. 1
      src/render_group.h
  5. 6
      src/renderer.cpp
  6. 7
      src/scene_loader.cpp

4
data/default.fs

@ -1,8 +1,8 @@
#version 330 core
in vec3 fragColor;
in vec3 fragNormal;
//in vec3 fragColor; // NOTE: removing this line fails to link program... somehow?
in vec3 fragVertex;
in vec3 fragNormal;
in vec2 fragUV;
out vec4 color;

9
data/default.vs

@ -1,13 +1,11 @@
#version 330 core
layout (location = 0) in vec3 vertexPosition_modelspace;
layout (location = 1) in vec3 vertexColor;
layout (location = 2) in vec3 normal;
layout (location = 3) in vec3 texCoord;
layout (location = 1) in vec3 normal;
layout (location = 2) in vec3 texCoord;
out vec3 fragColor;
out vec3 fragNormal;
out vec3 fragVertex;
out vec3 fragNormal;
out vec2 fragUV;
uniform mat4 model;
@ -16,7 +14,6 @@ uniform mat4 projection;
void main()
{
fragColor = vertexColor;
fragNormal = normal;
fragVertex = vertexPosition_modelspace;
fragUV = texCoord.st;

40
src/render_group.cpp

@ -199,24 +199,11 @@ rgDraw(render_group* rg, glm::mat4 model_matrix,
ro->vertex_buffer.buffer);
}
// 2nd attribute buffer : colors
if (ro->color_buffer.buffer)
{
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER, ro->color_buffer.buffer_id);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, (void*) 0);
if (update_color_data) {
glBufferSubData(GL_ARRAY_BUFFER, 0, ro->color_buffer.buffer_len * sizeof(GLfloat),
ro->color_buffer.buffer);
}
}
// 3rd attribute buffer: normals
// 2rd attribute buffer: normals
if (rg->use_normals) {
glEnableVertexAttribArray(2);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER, ro->normal_buffer.buffer_id);
glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 0, (void*) 0);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, (void*) 0);
glm::mat3 normal_matrix = glm::transpose(glm::inverse(glm::mat3(model_matrix)));
glUniformMatrix3fv(rg->shader.normal_matrix_id, 1, GL_FALSE, &normal_matrix[0][0]);
@ -236,11 +223,11 @@ rgDraw(render_group* rg, glm::mat4 model_matrix,
}
}
// 4th attribute buffer: UV coordinates
// 3rd attribute buffer: UV coordinates
if (ro->use_texture) {
glEnableVertexAttribArray(3);
glEnableVertexAttribArray(2);
glBindBuffer(GL_ARRAY_BUFFER, ro->uv_buffer.buffer_id);
glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, 0, (void*) 0);
glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 0, (void*) 0);
glBindTexture(GL_TEXTURE_2D, ro->tex_id);
glUniform1i(rg->shader.sampler_id, 0);
@ -260,12 +247,10 @@ rgDraw(render_group* rg, glm::mat4 model_matrix,
// cleanup
glDisableVertexAttribArray(0);
if (ro->color_buffer.buffer)
glDisableVertexAttribArray(1);
if (rg->use_normals)
glDisableVertexAttribArray(2);
glDisableVertexAttribArray(1);
if (ro->use_texture)
glDisableVertexAttribArray(3);
glDisableVertexAttribArray(2);
glUseProgram(0);
}
@ -301,8 +286,6 @@ allocateRenderObject(uint buffer_len, uint index_len)
ro->vertex_buffer.buffer_len = buffer_len;
ro->normal_buffer.buffer = UTIL_ALLOC(buffer_len, GLfloat);
ro->normal_buffer.buffer_len = buffer_len;
ro->color_buffer.buffer = UTIL_ALLOC(buffer_len, GLfloat);
ro->color_buffer.buffer_len = buffer_len;
ro->uv_buffer.buffer = UTIL_ALLOC(buffer_len, GLfloat);
ro->uv_buffer.buffer_len = buffer_len;
@ -313,7 +296,6 @@ allocateRenderObject(uint buffer_len, uint index_len)
if (ro->vertex_buffer.buffer == nullptr ||
ro->normal_buffer.buffer == nullptr ||
ro->color_buffer.buffer == nullptr ||
((index_len > 0) && (ro->vertex_buffer.buffer == nullptr)))
{
freeRenderObject(ro);
@ -334,7 +316,6 @@ freeRenderObject(render_object* ro)
glDeleteTextures(1, &ro->tex_id);
utilSafeFree(ro->vertex_buffer.buffer);
utilSafeFree(ro->normal_buffer.buffer);
utilSafeFree(ro->color_buffer.buffer);
utilSafeFree(ro->uv_buffer.buffer);
utilSafeFree(ro->index_buffer.buffer);
utilSafeFree(ro);
@ -345,12 +326,11 @@ convertMeshInfo(meMeshInfo* mesh, render_object* ro, bool use_normals, bool use_
{
uint vertex_buf_len = mesh->num_vertices * 3;
GLfloat* vertex_buf = ro->vertex_buffer.buffer;
GLfloat* color_buf = ro->color_buffer.buffer;
GLfloat* normal_buf = ro->normal_buffer.buffer;
GLfloat* uv_buf = ro->uv_buffer.buffer;
uint* index_buf = ro->index_buffer.buffer;
if (!vertex_buf || !color_buf || !normal_buf || !index_buf)
if (!vertex_buf || !normal_buf || !index_buf)
return false;
// dump vertices, colors, normals, and texture coords into render_group buffers
@ -384,7 +364,6 @@ convertMeshInfo(meMeshInfo* mesh, render_object* ro, bool use_normals, bool use_
}
}
color_buf[i] = mesh->diffuse_color[vertex_prop_index];
vertex_prop_index++;
if (vertex_prop_index == 3) {
@ -398,7 +377,6 @@ convertMeshInfo(meMeshInfo* mesh, render_object* ro, bool use_normals, bool use_
index_buf[i] = mesh->indices[i];
rgBufferData(&ro->vertex_buffer, GL_DYNAMIC_DRAW, GL_ARRAY_BUFFER);
rgBufferData(&ro->color_buffer, GL_STATIC_DRAW, GL_ARRAY_BUFFER);
if (use_normals)
rgBufferData(&ro->normal_buffer, GL_STATIC_DRAW, GL_ARRAY_BUFFER);
if (use_texture)

1
src/render_group.h

@ -45,7 +45,6 @@ struct render_object
gl_buffer vertex_buffer;
gl_buffer normal_buffer;
gl_buffer color_buffer;
gl_buffer uv_buffer;
gl_index_buffer index_buffer;
};

6
src/renderer.cpp

@ -157,21 +157,15 @@ renCreateScene(render_state* rs, Entity* entities, uint32 entity_count)
return false;
gl_buffer& debug_vertex_buf = rs->debug_render_group->render_objects[0]->vertex_buffer;
gl_buffer& debug_color_buf = rs->debug_render_group->render_objects[0]->color_buffer;
gl_buffer& debug_normal_buf = rs->debug_render_group->render_objects[0]->normal_buffer;
for (uint i = 0; i < debug_buf_len; i += 3) {
debug_color_buf.buffer[i] = 1.f;
debug_color_buf.buffer[i + 1] = 0.f;
debug_color_buf.buffer[i + 2] = 0.f;
debug_normal_buf.buffer[i] = 0.f;
debug_normal_buf.buffer[i + 1] = 0.f;
debug_normal_buf.buffer[i + 2] = 1.f;
}
rgBufferData(&debug_vertex_buf, GL_DYNAMIC_DRAW, GL_ARRAY_BUFFER);
rgBufferData(&debug_color_buf, GL_STATIC_DRAW, GL_ARRAY_BUFFER);
rgBufferData(&debug_normal_buf, GL_STATIC_DRAW, GL_ARRAY_BUFFER);
return true;

7
src/scene_loader.cpp

@ -176,7 +176,6 @@ slCreateHexRenderGroups(hexgrid& hg, render_state* rs)
rgBufferData(&ro->vertex_buffer, GL_DYNAMIC_DRAW, GL_ARRAY_BUFFER);
rgBufferData(&ro->normal_buffer, GL_STATIC_DRAW, GL_ARRAY_BUFFER);
rgBufferData(&ro->color_buffer, GL_DYNAMIC_DRAW, GL_ARRAY_BUFFER);
rgBufferData(&ro->uv_buffer, GL_DYNAMIC_DRAW, GL_ARRAY_BUFFER);
ro = rg_lines->render_objects[0];
@ -185,7 +184,6 @@ slCreateHexRenderGroups(hexgrid& hg, render_state* rs)
rgBufferData(&ro->vertex_buffer, GL_DYNAMIC_DRAW, GL_ARRAY_BUFFER);
rgBufferData(&ro->normal_buffer, GL_STATIC_DRAW, GL_ARRAY_BUFFER);
rgBufferData(&ro->color_buffer, GL_DYNAMIC_DRAW, GL_ARRAY_BUFFER);
rgBufferData(&ro->uv_buffer, GL_DYNAMIC_DRAW, GL_ARRAY_BUFFER);
return true;
@ -350,16 +348,11 @@ populateLineGLBuffers(hexgrid& hg, render_group* rg_lines)
{
render_object* ro = rg_lines->render_objects[0];
gl_buffer& vbuf = ro->vertex_buffer;
gl_buffer& cbuf = ro->color_buffer;
gl_buffer& normal_buf = ro->normal_buffer;
gl_buffer& uv_buf = ro->uv_buffer;
assert((hg.hex_array->size() * 6 * 2 * 3) == vbuf.buffer_len);
// fill line color buffer with black
for (uint i = 0; i < cbuf.buffer_len; i++)
cbuf.buffer[i] = 0.f;
// cheat at vertex normals since all hexes lay flat on z-axis
for (uint i = 0; i < normal_buf.buffer_len; i += 3) {
normal_buf.buffer[i] = 0.f;

Loading…
Cancel
Save