summaryrefslogtreecommitdiffstats
path: root/src/datavis3d/engine/drawer.cpp
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2013-07-15 16:25:54 +0300
committerMika Salmela <mika.salmela@digia.com>2013-07-15 16:26:52 +0300
commit2d4688233fbd551bae8f327215247985cd843958 (patch)
tree58444eb52c0077dbd2454b2eaf9224dc18ec47aa /src/datavis3d/engine/drawer.cpp
parent6bc7fabac51ddac7b95ffd85a1eef748f9d2e592 (diff)
Finally first visible surface.
Change-Id: Ib168cbb8cd636539aee62098b98e6e24a112dab6 Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavis3d/engine/drawer.cpp')
-rw-r--r--src/datavis3d/engine/drawer.cpp34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/datavis3d/engine/drawer.cpp b/src/datavis3d/engine/drawer.cpp
index 675848b0..464ad518 100644
--- a/src/datavis3d/engine/drawer.cpp
+++ b/src/datavis3d/engine/drawer.cpp
@@ -43,6 +43,8 @@
#include "drawer_p.h"
#include "shaderhelper_p.h"
#include "objecthelper_p.h"
+#include "abstractobjecthelper_p.h"
+#include "surfaceobject_p.h"
#include "camerahelper_p.h"
#include "utils_p.h"
#include "texturehelper_p.h"
@@ -100,7 +102,7 @@ void Drawer::setTransparency(LabelTransparency transparency)
emit drawerChanged();
}
-void Drawer::drawObject(ShaderHelper *shader, ObjectHelper *object, GLuint textureId,
+void Drawer::drawObject(ShaderHelper *shader, AbstractObjectHelper *object, GLuint textureId,
GLuint depthTextureId)
{
// Store the GL state before changing
@@ -161,6 +163,36 @@ void Drawer::drawObject(ShaderHelper *shader, ObjectHelper *object, GLuint textu
glBindTexture(GL_TEXTURE_2D, *oldTexId);
}
+void Drawer::drawSurfaceGrid(ShaderHelper *shader, SurfaceObject *object)
+{
+ // Store the GL state before changing
+ GLint oldActiveTex[1];
+ glGetIntegerv(GL_ACTIVE_TEXTURE, oldActiveTex);
+ GLint oldTexId[1];
+ glGetIntegerv(GL_TEXTURE_BINDING_2D, oldTexId);
+
+ // 1st attribute buffer : vertices
+ glEnableVertexAttribArray(shader->posAtt());
+ glBindBuffer(GL_ARRAY_BUFFER, object->vertexBuf());
+ glVertexAttribPointer(shader->posAtt(), 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
+
+ // Index buffer
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, object->gridElementBuf());
+
+ // Draw the lines
+ glDrawElements(GL_LINES, object->gridIndexCount(), GL_UNSIGNED_SHORT, (void*)0);
+
+ // Free buffers
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+
+ glDisableVertexAttribArray(shader->posAtt());
+
+ // Restore the GL state
+ glActiveTexture(*oldActiveTex);
+ glBindTexture(GL_TEXTURE_2D, *oldTexId);
+}
+
void Drawer::drawLabel(const AbstractRenderItem &item, const LabelItem &labelItem,
const QMatrix4x4 &viewmatrix, const QMatrix4x4 &projectionmatrix,
const QVector3D &positionComp, const QVector3D &rotation,