From 6dc3bf9285bd0cea03b748781d5210a212cc8699 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Thu, 4 Jun 2015 13:48:39 +0200 Subject: [PATCH] Fix world box messing up everything --- interface/src/Application.cpp | 9 +++---- interface/src/Util.cpp | 46 ++++++++++++++++++----------------- interface/src/Util.h | 2 +- 3 files changed, 28 insertions(+), 29 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 573ac160ff..ac03f6a666 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3190,12 +3190,9 @@ namespace render { template <> void payloadRender(const WorldBoxRenderData::Pointer& stuff, RenderArgs* args) { if (args->_renderMode != CAMERA_MODE_MIRROR && Menu::getInstance()->isOptionChecked(MenuOption::Stats)) { PerformanceTimer perfTimer("worldBox"); - renderWorldBox(args); - - // FIXME: there's currently a bug in the new render engine, if this origin dot is rendered out of view it will - // screw up the state of textures on models so they all end up rendering in the incorrect tint/color/texture - float originSphereRadius = 0.05f; - DependencyManager::get()->renderSphere(originSphereRadius, 15, 15, glm::vec4(1.0f, 0.0f, 0.0f, 1.0f)); + auto& batch = *args->_batch; + DependencyManager::get()->bindSimpleProgram(batch); + renderWorldBox(batch); } } } diff --git a/interface/src/Util.cpp b/interface/src/Util.cpp index 44ee38187c..f3449f9eb8 100644 --- a/interface/src/Util.cpp +++ b/interface/src/Util.cpp @@ -33,42 +33,44 @@ using namespace std; -void renderWorldBox(RenderArgs* renderArgs) { +void renderWorldBox(gpu::Batch& batch) { auto geometryCache = DependencyManager::get(); - auto batch = renderArgs->_batch; // Show edge of world glm::vec3 red(1.0f, 0.0f, 0.0f); glm::vec3 green(0.0f, 1.0f, 0.0f); glm::vec3 blue(0.0f, 0.0f, 1.0f); glm::vec3 grey(0.5f, 0.5f, 0.5f); - - geometryCache->renderLine(*batch, glm::vec3(0, 0, 0), glm::vec3(TREE_SCALE, 0, 0), red); - geometryCache->renderLine(*batch, glm::vec3(0, 0, 0), glm::vec3(0, TREE_SCALE, 0), green); - geometryCache->renderLine(*batch, glm::vec3(0, 0, 0), glm::vec3(0, 0, TREE_SCALE), blue); - geometryCache->renderLine(*batch, glm::vec3(0, 0, TREE_SCALE), glm::vec3(TREE_SCALE, 0, TREE_SCALE), grey); - geometryCache->renderLine(*batch, glm::vec3(TREE_SCALE, 0, TREE_SCALE), glm::vec3(TREE_SCALE, 0, 0), grey); + + auto transform = Transform{}; + batch.setModelTransform(transform); + geometryCache->renderLine(batch, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(TREE_SCALE, 0.0f, 0.0f), red); + geometryCache->renderLine(batch, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, TREE_SCALE, 0.0f), green); + geometryCache->renderLine(batch, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 0.0f, TREE_SCALE), blue); + geometryCache->renderLine(batch, glm::vec3(0.0f, 0.0f, TREE_SCALE), glm::vec3(TREE_SCALE, 0.0f, TREE_SCALE), grey); + geometryCache->renderLine(batch, glm::vec3(TREE_SCALE, 0.0f, TREE_SCALE), glm::vec3(TREE_SCALE, 0.0f, 0.0f), grey); // Draw meter markers along the 3 axis to help with measuring things const float MARKER_DISTANCE = 1.0f; const float MARKER_RADIUS = 0.05f; + + geometryCache->renderSphere(batch, MARKER_RADIUS, 10, 10, red); + + transform.setTranslation(glm::vec3(MARKER_DISTANCE, 0.0f, 0.0f)); + batch.setModelTransform(transform); + geometryCache->renderSphere(batch, MARKER_RADIUS, 10, 10, red); - Transform transform; - transform.setTranslation(glm::vec3(MARKER_DISTANCE, 0, 0)); - batch->setModelTransform(transform); - geometryCache->renderSphere(*batch, MARKER_RADIUS, 10, 10, red); + transform.setTranslation(glm::vec3(0.0f, MARKER_DISTANCE, 0.0f)); + batch.setModelTransform(transform); + geometryCache->renderSphere(batch, MARKER_RADIUS, 10, 10, green); - transform.setTranslation(glm::vec3(0, MARKER_DISTANCE, 0)); - batch->setModelTransform(transform); - geometryCache->renderSphere(*batch, MARKER_RADIUS, 10, 10, green); + transform.setTranslation(glm::vec3(0.0f, 0.0f, MARKER_DISTANCE)); + batch.setModelTransform(transform); + geometryCache->renderSphere(batch, MARKER_RADIUS, 10, 10, blue); - transform.setTranslation(glm::vec3(0, 0, MARKER_DISTANCE)); - batch->setModelTransform(transform); - geometryCache->renderSphere(*batch, MARKER_RADIUS, 10, 10, blue); - - transform.setTranslation(glm::vec3(MARKER_DISTANCE, 0, MARKER_DISTANCE)); - batch->setModelTransform(transform); - geometryCache->renderSphere(*batch, MARKER_RADIUS, 10, 10, grey); + transform.setTranslation(glm::vec3(MARKER_DISTANCE, 0.0f, MARKER_DISTANCE)); + batch.setModelTransform(transform); + geometryCache->renderSphere(batch, MARKER_RADIUS, 10, 10, grey); } // Return a random vector of average length 1 diff --git a/interface/src/Util.h b/interface/src/Util.h index a4a1595d6b..90debbffe5 100644 --- a/interface/src/Util.h +++ b/interface/src/Util.h @@ -21,7 +21,7 @@ float randFloat(); const glm::vec3 randVector(); -void renderWorldBox(RenderArgs* renderArgs); +void renderWorldBox(gpu::Batch& batch); int widthText(float scale, int mono, char const* string); void drawText(int x, int y, float scale, float radians, int mono,