From efb044ea5e1dc7b91e3a4cec32583ec03755683c Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 28 Jan 2015 15:08:59 -0800 Subject: [PATCH] change renderDashedLine() to take a color paramter --- interface/src/ui/ApplicationOverlay.cpp | 4 ---- interface/src/ui/BandwidthMeter.cpp | 2 ++ interface/src/ui/overlays/Cube3DOverlay.cpp | 24 +++++++++---------- interface/src/ui/overlays/Line3DOverlay.cpp | 3 +-- .../src/ui/overlays/Rectangle3DOverlay.cpp | 8 +++---- libraries/render-utils/src/GeometryCache.cpp | 9 ++++++- libraries/render-utils/src/GeometryCache.h | 2 +- 7 files changed, 28 insertions(+), 24 deletions(-) diff --git a/interface/src/ui/ApplicationOverlay.cpp b/interface/src/ui/ApplicationOverlay.cpp index 1ad7676578..2e6e1a1df4 100644 --- a/interface/src/ui/ApplicationOverlay.cpp +++ b/interface/src/ui/ApplicationOverlay.cpp @@ -320,8 +320,6 @@ void ApplicationOverlay::displayOverlayTextureOculus(Camera& whichCamera) { glDepthMask(GL_FALSE); glDisable(GL_ALPHA_TEST); - glColor4f(1.0f, 1.0f, 1.0f, _alpha); - static float textureFOV = 0.0f, textureAspectRatio = 1.0f; if (textureFOV != _textureFov || textureAspectRatio != _textureAspectRatio) { @@ -436,8 +434,6 @@ void ApplicationOverlay::displayOverlayTexture3DTV(Camera& whichCamera, float as glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_CONSTANT_ALPHA, GL_ONE); glEnable(GL_LIGHTING); - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); } void ApplicationOverlay::computeOculusPickRay(float x, float y, glm::vec3& origin, glm::vec3& direction) const { diff --git a/interface/src/ui/BandwidthMeter.cpp b/interface/src/ui/BandwidthMeter.cpp index 1b73ec9fcd..f1bcb2f0c9 100644 --- a/interface/src/ui/BandwidthMeter.cpp +++ b/interface/src/ui/BandwidthMeter.cpp @@ -162,6 +162,8 @@ void BandwidthMeter::render(int screenWidth, int screenHeight) { _textRenderer->draw(-labelWidthOut - SPACING_RIGHT_CAPTION_IN_OUT, textYlowerLine, CAPTION_OUT, textColor); // Render vertical lines for the frame + // TODO: I think there may be a bug in this newest code and/or the GeometryCache code, because it seems like + // sometimes the bandwidth meter doesn't render the vertical lines renderVerticalLine(0, 0, h, COLOR_FRAME); renderVerticalLine(barWidth, 0, h, COLOR_FRAME); diff --git a/interface/src/ui/overlays/Cube3DOverlay.cpp b/interface/src/ui/overlays/Cube3DOverlay.cpp index a2a1755acd..53d7d4e70b 100644 --- a/interface/src/ui/overlays/Cube3DOverlay.cpp +++ b/interface/src/ui/overlays/Cube3DOverlay.cpp @@ -111,20 +111,20 @@ void Cube3DOverlay::render(RenderArgs* args) { auto geometryCache = DependencyManager::get(); - geometryCache->renderDashedLine(bottomLeftNear, bottomRightNear); - geometryCache->renderDashedLine(bottomRightNear, bottomRightFar); - geometryCache->renderDashedLine(bottomRightFar, bottomLeftFar); - geometryCache->renderDashedLine(bottomLeftFar, bottomLeftNear); + geometryCache->renderDashedLine(bottomLeftNear, bottomRightNear, cubeColor); + geometryCache->renderDashedLine(bottomRightNear, bottomRightFar, cubeColor); + geometryCache->renderDashedLine(bottomRightFar, bottomLeftFar, cubeColor); + geometryCache->renderDashedLine(bottomLeftFar, bottomLeftNear, cubeColor); - geometryCache->renderDashedLine(topLeftNear, topRightNear); - geometryCache->renderDashedLine(topRightNear, topRightFar); - geometryCache->renderDashedLine(topRightFar, topLeftFar); - geometryCache->renderDashedLine(topLeftFar, topLeftNear); + geometryCache->renderDashedLine(topLeftNear, topRightNear, cubeColor); + geometryCache->renderDashedLine(topRightNear, topRightFar, cubeColor); + geometryCache->renderDashedLine(topRightFar, topLeftFar, cubeColor); + geometryCache->renderDashedLine(topLeftFar, topLeftNear, cubeColor); - geometryCache->renderDashedLine(bottomLeftNear, topLeftNear); - geometryCache->renderDashedLine(bottomRightNear, topRightNear); - geometryCache->renderDashedLine(bottomLeftFar, topLeftFar); - geometryCache->renderDashedLine(bottomRightFar, topRightFar); + geometryCache->renderDashedLine(bottomLeftNear, topLeftNear, cubeColor); + geometryCache->renderDashedLine(bottomRightNear, topRightNear, cubeColor); + geometryCache->renderDashedLine(bottomLeftFar, topLeftFar, cubeColor); + geometryCache->renderDashedLine(bottomRightFar, topRightFar, cubeColor); } else { glScalef(dimensions.x, dimensions.y, dimensions.z); diff --git a/interface/src/ui/overlays/Line3DOverlay.cpp b/interface/src/ui/overlays/Line3DOverlay.cpp index f02006c5f8..d2bfa1955b 100644 --- a/interface/src/ui/overlays/Line3DOverlay.cpp +++ b/interface/src/ui/overlays/Line3DOverlay.cpp @@ -60,8 +60,7 @@ void Line3DOverlay::render(RenderArgs* args) { if (getIsDashedLine()) { // TODO: add support for color to renderDashedLine() - glColor4f(color.red / MAX_COLOR, color.green / MAX_COLOR, color.blue / MAX_COLOR, alpha); - DependencyManager::get()->renderDashedLine(_position, _end, _geometryCacheID); + DependencyManager::get()->renderDashedLine(_position, _end, colorv4, _geometryCacheID); } else { DependencyManager::get()->renderLine(_start, _end, colorv4, _geometryCacheID); } diff --git a/interface/src/ui/overlays/Rectangle3DOverlay.cpp b/interface/src/ui/overlays/Rectangle3DOverlay.cpp index 0c81e932a3..82a5383036 100644 --- a/interface/src/ui/overlays/Rectangle3DOverlay.cpp +++ b/interface/src/ui/overlays/Rectangle3DOverlay.cpp @@ -81,10 +81,10 @@ void Rectangle3DOverlay::render(RenderArgs* args) { glm::vec3 point3(halfDimensions.x, 0.0f, halfDimensions.y); glm::vec3 point4(-halfDimensions.x, 0.0f, halfDimensions.y); - geometryCache->renderDashedLine(point1, point2); - geometryCache->renderDashedLine(point2, point3); - geometryCache->renderDashedLine(point3, point4); - geometryCache->renderDashedLine(point4, point1); + geometryCache->renderDashedLine(point1, point2, rectangleColor); + geometryCache->renderDashedLine(point2, point3, rectangleColor); + geometryCache->renderDashedLine(point3, point4, rectangleColor); + geometryCache->renderDashedLine(point4, point1, rectangleColor); } else { diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 27019a2dd3..745b248bdd 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -1366,7 +1366,8 @@ void GeometryCache::renderQuad(const glm::vec3& topLeft, const glm::vec3& bottom glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); } -void GeometryCache::renderDashedLine(const glm::vec3& start, const glm::vec3& end, int id) { +// TODO: switch this over to use BatchItemDetails like the other line and vertices functions +void GeometryCache::renderDashedLine(const glm::vec3& start, const glm::vec3& end, const glm::vec4& color, int id) { bool registered = (id != UNKNOWN_ID); Vec3Pair key(start, end); BufferDetails& details = registered ? _registeredDashedLines[id] : _dashedLines[key]; @@ -1383,6 +1384,12 @@ void GeometryCache::renderDashedLine(const glm::vec3& start, const glm::vec3& en } if (!details.buffer.isCreated()) { + + int compactColor = ((int(color.x * 255.0f) & 0xFF)) | + ((int(color.y * 255.0f) & 0xFF) << 8) | + ((int(color.z * 255.0f) & 0xFF) << 16) | + ((int(color.w * 255.0f) & 0xFF) << 24); + // draw each line segment with appropriate gaps const float DASH_LENGTH = 0.05f; diff --git a/libraries/render-utils/src/GeometryCache.h b/libraries/render-utils/src/GeometryCache.h index 038dcb352d..9316048981 100644 --- a/libraries/render-utils/src/GeometryCache.h +++ b/libraries/render-utils/src/GeometryCache.h @@ -134,7 +134,7 @@ public: void renderLine(const glm::vec3& p1, const glm::vec3& p2, const glm::vec4& color1, const glm::vec4& color2, int id = UNKNOWN_ID); - void renderDashedLine(const glm::vec3& start, const glm::vec3& end, int id = UNKNOWN_ID); + void renderDashedLine(const glm::vec3& start, const glm::vec3& end, const glm::vec4& color, int id = UNKNOWN_ID); void renderLine(const glm::vec2& p1, const glm::vec2& p2, const glm::vec3& color, int id = UNKNOWN_ID) { renderLine(p1, p2, glm::vec4(color, 1.0f), id); }