summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/abstract3drenderer.cpp
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2014-08-26 11:26:06 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-08-26 11:57:58 +0300
commitfcac33d0ee25115808ca43810cf6a3438e2da227 (patch)
tree476ccc9bef5aa83204144a43f86c13cadb81b62d /src/datavisualization/engine/abstract3drenderer.cpp
parent5a51d06ec8f0210f51e65abfde9f868ab7bfa8ef (diff)
Reflection API added
Task-number: QTRD-3287 Change-Id: I6c06b8fe025e0f1f87be00be906cab0e1f18a19f Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/engine/abstract3drenderer.cpp')
-rw-r--r--src/datavisualization/engine/abstract3drenderer.cpp78
1 files changed, 34 insertions, 44 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp
index 37688beb..7cf7f020 100644
--- a/src/datavisualization/engine/abstract3drenderer.cpp
+++ b/src/datavisualization/engine/abstract3drenderer.cpp
@@ -83,7 +83,9 @@ Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller)
m_zFlipRotation(QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, -180.0f)),
m_vBackgroundMargin(0.1f),
m_hBackgroundMargin(0.1f),
- m_oldCameraTarget(QVector3D(2000.0f, 2000.0f, 2000.0f)) // Just random invalid target
+ m_oldCameraTarget(QVector3D(2000.0f, 2000.0f, 2000.0f)), // Just random invalid target
+ m_reflectionEnabled(false),
+ m_reflectivity(0.5)
{
QObject::connect(m_drawer, &Drawer::drawerChanged, this, &Abstract3DRenderer::updateTextures);
QObject::connect(this, &Abstract3DRenderer::needRender, controller,
@@ -1049,7 +1051,7 @@ void Abstract3DRenderer::updateCustomItem(CustomRenderItem *renderItem)
}
} else
#if !defined(QT_OPENGL_ES_2)
- if (!item->d_ptr->m_isVolumeItem)
+ if (!item->d_ptr->m_isVolumeItem)
#endif
{
renderItem->setBlendNeeded(textureImage.hasAlphaChannel());
@@ -1097,10 +1099,10 @@ void Abstract3DRenderer::updateCustomItem(CustomRenderItem *renderItem)
GLuint oldTexture = renderItem->texture();
m_textureHelper->deleteTexture(&oldTexture);
GLuint texture = m_textureHelper->create3DTexture(volumeItem->textureData(),
- volumeItem->textureWidth(),
- volumeItem->textureHeight(),
- volumeItem->textureDepth(),
- volumeItem->textureFormat());
+ volumeItem->textureWidth(),
+ volumeItem->textureHeight(),
+ volumeItem->textureDepth(),
+ volumeItem->textureFormat());
renderItem->setTexture(texture);
renderItem->setTextureWidth(volumeItem->textureWidth());
renderItem->setTextureHeight(volumeItem->textureHeight());
@@ -1134,7 +1136,6 @@ void Abstract3DRenderer::updateCustomItemPositions()
}
}
-#ifdef USE_REFLECTIONS
void Abstract3DRenderer::drawCustomItems(RenderingState state,
ShaderHelper *regularShader,
ShaderHelper *volumeShader,
@@ -1145,17 +1146,6 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state,
GLuint depthTexture,
GLfloat shadowQuality,
GLfloat reflection)
-#else
-void Abstract3DRenderer::drawCustomItems(RenderingState state,
- ShaderHelper *regularShader,
- ShaderHelper *volumeShader,
- ShaderHelper *volumeSliceShader,
- const QMatrix4x4 &viewMatrix,
- const QMatrix4x4 &projectionViewMatrix,
- const QMatrix4x4 &depthProjectionViewMatrix,
- GLuint depthTexture,
- GLfloat shadowQuality)
-#endif
{
#if defined(QT_OPENGL_ES_2)
Q_UNUSED(volumeShader)
@@ -1205,36 +1195,36 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state,
* QQuaternion::fromAxisAndAngle(1.0f, 0.0f, 0.0f, -camRotationY);
}
-#ifdef USE_REFLECTIONS
- if (reflection < 0.0f) {
- if (item->itemPointer()->d_ptr->m_isLabelItem)
- continue;
- else
- glCullFace(GL_FRONT);
- } else {
- glCullFace(GL_BACK);
- }
- QVector3D trans = item->translation();
- trans.setY(reflection * trans.y());
- modelMatrix.translate(trans);
- if (reflection < 0.0f) {
- QQuaternion mirror = QQuaternion(rotation.scalar(),
- -rotation.x(), rotation.y(), -rotation.z());
- modelMatrix.rotate(mirror);
- itModelMatrix.rotate(mirror);
+ if (m_reflectionEnabled) {
+ if (reflection < 0.0f) {
+ if (item->itemPointer()->d_ptr->m_isLabelItem)
+ continue;
+ else
+ glCullFace(GL_FRONT);
+ } else {
+ glCullFace(GL_BACK);
+ }
+ QVector3D trans = item->translation();
+ trans.setY(reflection * trans.y());
+ modelMatrix.translate(trans);
+ if (reflection < 0.0f) {
+ QQuaternion mirror = QQuaternion(rotation.scalar(),
+ -rotation.x(), rotation.y(), -rotation.z());
+ modelMatrix.rotate(mirror);
+ itModelMatrix.rotate(mirror);
+ } else {
+ modelMatrix.rotate(rotation);
+ itModelMatrix.rotate(rotation);
+ }
+ QVector3D scale = item->scaling();
+ scale.setY(reflection * scale.y());
+ modelMatrix.scale(scale);
} else {
+ modelMatrix.translate(item->translation());
modelMatrix.rotate(rotation);
+ modelMatrix.scale(item->scaling());
itModelMatrix.rotate(rotation);
}
- QVector3D scale = item->scaling();
- scale.setY(reflection * scale.y());
- modelMatrix.scale(scale);
-#else
- modelMatrix.translate(item->translation());
- modelMatrix.rotate(rotation);
- modelMatrix.scale(item->scaling());
- itModelMatrix.rotate(rotation);
-#endif
if (!item->isFacingCamera())
itModelMatrix.scale(item->scaling());
MVPMatrix = projectionViewMatrix * modelMatrix;