mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 08:36:26 +02:00
Fix text entity billboarding
This commit is contained in:
parent
c6a613eaa9
commit
0eb89efb34
1 changed files with 11 additions and 8 deletions
|
@ -36,10 +36,6 @@ void RenderableTextEntityItem::render(RenderArgs* args) {
|
||||||
glm::vec4 backgroundColor = glm::vec4(toGlm(getBackgroundColorX()), 1.0f);
|
glm::vec4 backgroundColor = glm::vec4(toGlm(getBackgroundColorX()), 1.0f);
|
||||||
glm::vec3 dimensions = getDimensions();
|
glm::vec3 dimensions = getDimensions();
|
||||||
|
|
||||||
Transform transformToTopLeft = getTransformToCenter();
|
|
||||||
transformToTopLeft.postTranslate(glm::vec3(-0.5f, 0.5f, 0.0f)); // Go to the top left
|
|
||||||
transformToTopLeft.setScale(1.0f); // Use a scale of one so that the text is not deformed
|
|
||||||
|
|
||||||
// Render background
|
// Render background
|
||||||
glm::vec3 minCorner = glm::vec3(0.0f, -dimensions.y, SLIGHTLY_BEHIND);
|
glm::vec3 minCorner = glm::vec3(0.0f, -dimensions.y, SLIGHTLY_BEHIND);
|
||||||
glm::vec3 maxCorner = glm::vec3(dimensions.x, 0.0f, SLIGHTLY_BEHIND);
|
glm::vec3 maxCorner = glm::vec3(dimensions.x, 0.0f, SLIGHTLY_BEHIND);
|
||||||
|
@ -48,13 +44,20 @@ void RenderableTextEntityItem::render(RenderArgs* args) {
|
||||||
// Batch render calls
|
// Batch render calls
|
||||||
Q_ASSERT(args->_batch);
|
Q_ASSERT(args->_batch);
|
||||||
gpu::Batch& batch = *args->_batch;
|
gpu::Batch& batch = *args->_batch;
|
||||||
batch.setModelTransform(transformToTopLeft);
|
|
||||||
|
|
||||||
//rotate about vertical to face the camera
|
Transform transformToTopLeft = getTransformToCenter();
|
||||||
if (getFaceCamera()) {
|
if (getFaceCamera()) {
|
||||||
transformToTopLeft.postRotate(args->_viewFrustum->getOrientation());
|
//rotate about vertical to face the camera
|
||||||
batch.setModelTransform(transformToTopLeft);
|
glm::vec3 dPosition = args->_viewFrustum->getPosition() - getPosition();
|
||||||
|
// If x and z are 0, atan(x, z) is undefined, so default to 0 degrees
|
||||||
|
float yawRotation = dPosition.x == 0.0f && dPosition.z == 0.0f ? 0.0f : glm::atan(dPosition.x, dPosition.z);
|
||||||
|
glm::quat orientation = glm::quat(glm::vec3(0.0f, yawRotation, 0.0f));
|
||||||
|
transformToTopLeft.setRotation(orientation);
|
||||||
}
|
}
|
||||||
|
transformToTopLeft.postTranslate(glm::vec3(-0.5f, 0.5f, 0.0f)); // Go to the top left
|
||||||
|
transformToTopLeft.setScale(1.0f); // Use a scale of one so that the text is not deformed
|
||||||
|
|
||||||
|
batch.setModelTransform(transformToTopLeft);
|
||||||
|
|
||||||
DependencyManager::get<DeferredLightingEffect>()->bindSimpleProgram(batch, false, false);
|
DependencyManager::get<DeferredLightingEffect>()->bindSimpleProgram(batch, false, false);
|
||||||
DependencyManager::get<GeometryCache>()->renderQuad(batch, minCorner, maxCorner, backgroundColor);
|
DependencyManager::get<GeometryCache>()->renderQuad(batch, minCorner, maxCorner, backgroundColor);
|
||||||
|
|
Loading…
Reference in a new issue