Red debug bounding boxes boilerplate

This commit is contained in:
2014-03-13 03:05:22 +01:00
parent 61b0d9e7d3
commit 788582276d
4 changed files with 26 additions and 15 deletions
+19 -10
View File
@@ -131,10 +131,19 @@ void Renderer::Draw(double dt)
glEnable(GL_BLEND);
glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
m_ShaderProgramDebugAABB.Bind();
for (auto aabbModelMatrix : AABBsToRender) {
for (auto tuple : AABBsToRender) {
glm::mat4 modelMatrix;
bool colliding;
std::tie(modelMatrix, colliding) = tuple;
// Model matrix
glm::mat4 cameraMatrix = m_Camera->ProjectionMatrix() * m_Camera->ViewMatrix();
glm::mat4 MVP = cameraMatrix * aabbModelMatrix;
glm::mat4 MVP = cameraMatrix * modelMatrix;
glUniformMatrix4fv(glGetUniformLocation(m_ShaderProgramDebugAABB.GetHandle(), "MVP"), 1, GL_FALSE, glm::value_ptr(MVP));
// Color
glm::vec4 color(1.f, 1.f, 1.f, 0.f);
if (colliding)
color = glm::vec4(1.f, 0.f, 0.f, 0.f);
glUniform4fv(glGetUniformLocation(m_ShaderProgramDebugAABB.GetHandle(), "Color"), 1, glm::value_ptr(color));
glBindVertexArray(m_DebugAABB);
glDrawArrays(GL_LINES, 0, 24);
}
@@ -318,6 +327,14 @@ void Renderer::AddPointLightToDraw(
}
void Renderer::AddAABBToDraw(glm::vec3 origin, glm::vec3 volumeVector, bool colliding)
{
glm::mat4 model;
model *= glm::translate(origin);
model *= glm::scale(volumeVector);
AABBsToRender.push_back(std::make_tuple(model, colliding));
}
GLuint Renderer::CreateQuad()
{
float quadVertices[] = {
@@ -409,11 +426,3 @@ GLuint Renderer::CreateAABB()
return vao;
}
void Renderer::AddAABBToDraw(glm::vec3 origin, glm::vec3 volumeVector)
{
glm::mat4 model;
model *= glm::translate(origin);
model *= glm::scale(volumeVector);
AABBsToRender.push_back(model);
}
+2 -2
View File
@@ -46,7 +46,7 @@ public:
std::vector<float> Light_linearAttenuation;
std::vector<float> Light_quadraticAttenuation;
std::vector<float> Light_spotExponent;
std::vector<glm::mat4> AABBsToRender;
std::vector<std::tuple<glm::mat4, bool>> AABBsToRender;
Renderer();
@@ -65,7 +65,7 @@ public:
float _quadraticAttenuation,
float _spotExponent
);
void AddAABBToDraw(glm::vec3 origin, glm::vec3 volumeVector);
void AddAABBToDraw(glm::vec3 origin, glm::vec3 volumeVector, bool colliding);
void LoadContent();
+3 -1
View File
@@ -1,5 +1,7 @@
#version 430
uniform vec4 Color;
in VertexData {
vec3 Position;
vec3 Normal;
@@ -11,5 +13,5 @@ out vec4 FragmentColor;
void main() {
//FragmentColor = vec4(1.0 - gl_Color.r, 1.0 - gl_Color.g, 1.0 - gl_Color.b, 0.0);
FragmentColor = vec4(1.0, 1.0, 1.0, 1.0);
FragmentColor = Color;
}
+2 -2
View File
@@ -32,9 +32,9 @@ void Systems::RenderSystem::UpdateEntity( double dt, EntityID entity, EntityID p
#ifdef DEBUG
auto bounds = m_World->GetComponent<Components::Bounds>(entity, "Bounds");
if (bounds != nullptr) {
glm::vec3 origin = transformComponent->Scale * (transformComponent->Position + bounds->Origin);
glm::vec3 origin = transformComponent->Position + (transformComponent->Scale * bounds->Origin);
glm::vec3 volumeVector = transformComponent->Scale * bounds->VolumeVector;
m_Renderer->AddAABBToDraw(origin, volumeVector);
m_Renderer->AddAABBToDraw(origin, volumeVector, true);
}
#endif