summaryrefslogtreecommitdiffstats
path: root/src/datavis3d/engine/drawer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavis3d/engine/drawer.cpp')
-rw-r--r--src/datavis3d/engine/drawer.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/datavis3d/engine/drawer.cpp b/src/datavis3d/engine/drawer.cpp
index 8e041741..722a54b8 100644
--- a/src/datavis3d/engine/drawer.cpp
+++ b/src/datavis3d/engine/drawer.cpp
@@ -85,16 +85,23 @@ void Drawer::setTransparency(LabelTransparency transparency)
emit drawerChanged();
}
-void Drawer::drawObject(ShaderHelper *shader, ObjectHelper *object, bool textured,
- GLuint textureId)
+void Drawer::drawObject(ShaderHelper *shader, ObjectHelper *object, GLuint textureId,
+ GLuint depthTextureId)
{
- if (textured) {
+ if (textureId) {
// Activate texture
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, textureId);
shader->setUniformValue(shader->texture(), 0);
}
+ if (depthTextureId) {
+ // Activate depth texture
+ glActiveTexture(GL_TEXTURE1);
+ glBindTexture(GL_TEXTURE_2D, depthTextureId);
+ shader->setUniformValue(shader->shadow(), 1);
+ }
+
// 1st attribute buffer : vertices
glEnableVertexAttribArray(shader->posAtt());
glBindBuffer(GL_ARRAY_BUFFER, object->vertexBuf());
@@ -105,7 +112,7 @@ void Drawer::drawObject(ShaderHelper *shader, ObjectHelper *object, bool texture
glBindBuffer(GL_ARRAY_BUFFER, object->normalBuf());
glVertexAttribPointer(shader->normalAtt(), 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
- if (textured) {
+ if (textureId || depthTextureId) {
// 3rd attribute buffer : UVs
glEnableVertexAttribArray(shader->uvAtt());
glBindBuffer(GL_ARRAY_BUFFER, object->uvBuf());
@@ -122,7 +129,7 @@ void Drawer::drawObject(ShaderHelper *shader, ObjectHelper *object, bool texture
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- if (textured) {
+ if (textureId || depthTextureId) {
glBindTexture(GL_TEXTURE_2D, 0);
glDisableVertexAttribArray(shader->uvAtt());
}
@@ -259,7 +266,7 @@ void Drawer::drawLabel(const QDataItem &item, const LabelItem &label,
shader->setUniformValue(shader->MVP(), MVPMatrix);
// Draw the object
- drawObject(shader, object, true, labelItem.textureId());
+ drawObject(shader, object, labelItem.textureId());
}
void Drawer::generateLabelTexture(QDataItem *item)