diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index d0268fd936..6374b6b10b 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -523,7 +523,7 @@ void Avatar::render(RenderArgs* renderArgs, const glm::vec3& cameraPosition, boo auto cameraMode = Application::getInstance()->getCamera()->getMode(); if (!isMyAvatar() || cameraMode != CAMERA_MODE_FIRST_PERSON) { - renderDisplayName(batch, *renderArgs->_viewFrustum); + renderDisplayName(batch, *renderArgs->_viewFrustum, renderArgs->_viewport); } } @@ -674,7 +674,7 @@ glm::vec3 Avatar::getDisplayNamePosition() const { return namePosition; } -Transform Avatar::calculateDisplayNameTransform(const ViewFrustum& frustum, float fontSize) const { +Transform Avatar::calculateDisplayNameTransform(const ViewFrustum& frustum, float fontSize, const glm::ivec4& viewport) const { Transform result; // We assume textPosition is whithin the frustum glm::vec3 textPosition = getDisplayNamePosition(); @@ -693,12 +693,7 @@ Transform Avatar::calculateDisplayNameTransform(const ViewFrustum& frustum, floa glm::vec4 p0 = viewProj * glm::vec4(testPoint0, 1.0); glm::vec4 p1 = viewProj * glm::vec4(testPoint1, 1.0); - // TODO REMOVE vvv - GLint viewportMatrix[4]; - glGetIntegerv(GL_VIEWPORT, viewportMatrix); - glm::dmat4 modelViewMatrix; - float windowSizeY = viewportMatrix[3] - viewportMatrix[1]; - // TODO REMOVE ^^^ + float windowSizeY = viewport.w; const float DESIRED_HIGHT_ON_SCREEN = 20; // In pixels (this is double on retinas) @@ -731,7 +726,7 @@ Transform Avatar::calculateDisplayNameTransform(const ViewFrustum& frustum, floa } -void Avatar::renderDisplayName(gpu::Batch& batch, const ViewFrustum& frustum) const { +void Avatar::renderDisplayName(gpu::Batch& batch, const ViewFrustum& frustum, const glm::ivec4& viewport) const { bool shouldShowReceiveStats = DependencyManager::get()->shouldShowReceiveStats() && !isMyAvatar(); // If we have nothing to draw, or it's tottaly transparent, return @@ -773,7 +768,7 @@ void Avatar::renderDisplayName(gpu::Batch& batch, const ViewFrustum& frustum) co (_displayNameAlpha / DISPLAYNAME_ALPHA) * DISPLAYNAME_BACKGROUND_ALPHA); // Compute display name transform - auto textTransform = calculateDisplayNameTransform(frustum, renderer->getFontSize()); + auto textTransform = calculateDisplayNameTransform(frustum, renderer->getFontSize(), viewport); batch.setModelTransform(textTransform); DependencyManager::get()->bindSimpleProgram(batch, false, true, true, true); diff --git a/interface/src/avatar/Avatar.h b/interface/src/avatar/Avatar.h index b23059acb0..b67caa1641 100644 --- a/interface/src/avatar/Avatar.h +++ b/interface/src/avatar/Avatar.h @@ -234,8 +234,8 @@ protected: float getPelvisFloatingHeight() const; glm::vec3 getDisplayNamePosition() const; - Transform calculateDisplayNameTransform(const ViewFrustum& frustum, float fontSize) const; - void renderDisplayName(gpu::Batch& batch, const ViewFrustum& frustum) const; + Transform calculateDisplayNameTransform(const ViewFrustum& frustum, float fontSize, const glm::ivec4& viewport) const; + void renderDisplayName(gpu::Batch& batch, const ViewFrustum& frustum, const glm::ivec4& viewport) const; virtual void renderBody(RenderArgs* renderArgs, ViewFrustum* renderFrustum, bool postLighting, float glowLevel = 0.0f); virtual bool shouldRenderHead(const RenderArgs* renderArgs) const; virtual void fixupModelsInScene();