diff options
author | Mika Salmela <mika.salmela@digia.com> | 2013-07-15 16:25:54 +0300 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2013-07-15 16:26:52 +0300 |
commit | 2d4688233fbd551bae8f327215247985cd843958 (patch) | |
tree | 58444eb52c0077dbd2454b2eaf9224dc18ec47aa /src/datavis3d/engine/drawer.cpp | |
parent | 6bc7fabac51ddac7b95ffd85a1eef748f9d2e592 (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.cpp | 34 |
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, |