Debug entity render in batch

Also removed unnecessary glPush/Pop
This commit is contained in:
Atlante45 2015-05-17 12:42:14 +02:00
parent 16340c0fee
commit 802e963bba
2 changed files with 17 additions and 40 deletions

View file

@ -12,7 +12,10 @@
#include <glm/gtx/quaternion.hpp> #include <glm/gtx/quaternion.hpp>
#include <gpu/GPUConfig.h> #include <gpu/GPUConfig.h>
#include <gpu/Batch.h>
#include <DeferredLightingEffect.h> #include <DeferredLightingEffect.h>
#include <PhysicsEngine.h> #include <PhysicsEngine.h>
@ -21,48 +24,24 @@
void RenderableDebugableEntityItem::renderBoundingBox(EntityItem* entity, RenderArgs* args, void RenderableDebugableEntityItem::renderBoundingBox(EntityItem* entity, RenderArgs* args,
float puffedOut, glm::vec4& color) { float puffedOut, glm::vec4& color) {
glm::vec3 position = entity->getPosition(); Q_ASSERT(args->_batch);
glm::vec3 center = entity->getCenterPosition(); gpu::Batch& batch = *args->_batch;
glm::vec3 dimensions = entity->getDimensions(); batch.setModelTransform(entity->getTransformToCenter());
glm::quat rotation = entity->getRotation(); DependencyManager::get<DeferredLightingEffect>()->renderWireCube(1.0f + puffedOut, color);
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<DeferredLightingEffect>()->renderWireCube(1.0f + puffedOut, color);
glPopMatrix();
glPopMatrix();
} }
void RenderableDebugableEntityItem::renderHoverDot(EntityItem* entity, RenderArgs* args) { void RenderableDebugableEntityItem::renderHoverDot(EntityItem* entity, RenderArgs* args) {
glm::vec3 position = entity->getPosition(); const int SLICES = 8, STACKS = 8;
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);
float radius = 0.05f; float radius = 0.05f;
glm::vec4 blueColor(0.0f, 0.0f, 1.0f, 1.0f);
glPushMatrix();
glTranslatef(position.x, position.y + dimensions.y + radius, position.z); Q_ASSERT(args->_batch);
glm::vec3 axis = glm::axis(rotation); gpu::Batch& batch = *args->_batch;
glRotatef(glm::degrees(glm::angle(rotation)), axis.x, axis.y, axis.z); Transform transform = entity->getTransformToCenter();
// Cancel true dimensions and set scale to 2 * radius (diameter)
glPushMatrix(); transform.postScale(2.0f * glm::vec3(radius, radius, radius) / entity->getDimensions());
glm::vec3 positionToCenter = center - position; batch.setModelTransform(transform);
glTranslatef(positionToCenter.x, positionToCenter.y, positionToCenter.z); DependencyManager::get<DeferredLightingEffect>()->renderSolidSphere(0.5f, SLICES, STACKS, blueColor);
glScalef(radius, radius, radius);
const int SLICES = 8;
const int STACKS = 8;
DependencyManager::get<DeferredLightingEffect>()->renderSolidSphere(0.5f, SLICES, STACKS, blueColor);
glPopMatrix();
glPopMatrix();
} }
void RenderableDebugableEntityItem::render(EntityItem* entity, RenderArgs* args) { void RenderableDebugableEntityItem::render(EntityItem* entity, RenderArgs* args) {

View file

@ -102,9 +102,7 @@ void RenderableZoneEntityItem::render(RenderArgs* args) {
updateGeometry(); updateGeometry();
if (_model && _model->isActive()) { if (_model && _model->isActive()) {
glPushMatrix();
_model->renderInScene(getLocalRenderAlpha(), args); _model->renderInScene(getLocalRenderAlpha(), args);
glPopMatrix();
} }
break; break;
} }