From 802e963bbabe6165622081eb63a9cc9975b7482f Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Sun, 17 May 2015 12:42:14 +0200 Subject: [PATCH] Debug entity render in batch Also removed unnecessary glPush/Pop --- .../src/RenderableDebugableEntityItem.cpp | 55 ++++++------------- .../src/RenderableZoneEntityItem.cpp | 2 - 2 files changed, 17 insertions(+), 40 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableDebugableEntityItem.cpp b/libraries/entities-renderer/src/RenderableDebugableEntityItem.cpp index 6cef09fbbe..994b72839c 100644 --- a/libraries/entities-renderer/src/RenderableDebugableEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableDebugableEntityItem.cpp @@ -12,7 +12,10 @@ #include + #include +#include + #include #include @@ -21,48 +24,24 @@ void RenderableDebugableEntityItem::renderBoundingBox(EntityItem* entity, RenderArgs* args, float puffedOut, glm::vec4& color) { - glm::vec3 position = entity->getPosition(); - glm::vec3 center = entity->getCenterPosition(); - glm::vec3 dimensions = entity->getDimensions(); - glm::quat rotation = entity->getRotation(); - - glPushMatrix(); - glTranslatef(position.x, position.y, position.z); - glm::vec3 axis = glm::axis(rotation); - glRotatef(glm::degrees(glm::angle(rotation)), axis.x, axis.y, axis.z); - glPushMatrix(); - glm::vec3 positionToCenter = center - position; - glTranslatef(positionToCenter.x, positionToCenter.y, positionToCenter.z); - glScalef(dimensions.x, dimensions.y, dimensions.z); - DependencyManager::get()->renderWireCube(1.0f + puffedOut, color); - glPopMatrix(); - glPopMatrix(); + Q_ASSERT(args->_batch); + gpu::Batch& batch = *args->_batch; + batch.setModelTransform(entity->getTransformToCenter()); + DependencyManager::get()->renderWireCube(1.0f + puffedOut, color); } void RenderableDebugableEntityItem::renderHoverDot(EntityItem* entity, RenderArgs* args) { - glm::vec3 position = entity->getPosition(); - glm::vec3 center = entity->getCenterPosition(); - glm::vec3 dimensions = entity->getDimensions(); - glm::quat rotation = entity->getRotation(); - glm::vec4 blueColor(0.0f, 0.0f, 1.0f, 1.0f); + const int SLICES = 8, STACKS = 8; float radius = 0.05f; - - glPushMatrix(); - glTranslatef(position.x, position.y + dimensions.y + radius, position.z); - glm::vec3 axis = glm::axis(rotation); - glRotatef(glm::degrees(glm::angle(rotation)), axis.x, axis.y, axis.z); - - glPushMatrix(); - glm::vec3 positionToCenter = center - position; - glTranslatef(positionToCenter.x, positionToCenter.y, positionToCenter.z); - - glScalef(radius, radius, radius); - - const int SLICES = 8; - const int STACKS = 8; - DependencyManager::get()->renderSolidSphere(0.5f, SLICES, STACKS, blueColor); - glPopMatrix(); - glPopMatrix(); + glm::vec4 blueColor(0.0f, 0.0f, 1.0f, 1.0f); + + Q_ASSERT(args->_batch); + gpu::Batch& batch = *args->_batch; + Transform transform = entity->getTransformToCenter(); + // Cancel true dimensions and set scale to 2 * radius (diameter) + transform.postScale(2.0f * glm::vec3(radius, radius, radius) / entity->getDimensions()); + batch.setModelTransform(transform); + DependencyManager::get()->renderSolidSphere(0.5f, SLICES, STACKS, blueColor); } void RenderableDebugableEntityItem::render(EntityItem* entity, RenderArgs* args) { diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index fbae2a773f..89b139f835 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -102,9 +102,7 @@ void RenderableZoneEntityItem::render(RenderArgs* args) { updateGeometry(); if (_model && _model->isActive()) { - glPushMatrix(); _model->renderInScene(getLocalRenderAlpha(), args); - glPopMatrix(); } break; }