summaryrefslogtreecommitdiffstats
path: root/src/mmscene.cpp
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-10-06 12:52:40 +0200
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-10-06 12:53:07 +0200
commitaf64f953d4f01a7c7bd3415ff5edfff8d4f7c48d (patch)
treeee6060a549c311ffa02b4a604bd9059f0465b237 /src/mmscene.cpp
downloadMultimedia-af64f953d4f01a7c7bd3415ff5edfff8d4f7c48d.tar.gz
Multimedia-af64f953d4f01a7c7bd3415ff5edfff8d4f7c48d.zip
Initial commit
Diffstat (limited to 'src/mmscene.cpp')
-rw-r--r--src/mmscene.cpp89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/mmscene.cpp b/src/mmscene.cpp
new file mode 100644
index 0000000..1aca89f
--- /dev/null
+++ b/src/mmscene.cpp
@@ -0,0 +1,89 @@
+#include "mmscene.h"
+#include "glpoint.h"
+#include "glcolorrgba.h"
+
+MMScene::MMScene(QQuickItem *parent)
+ :GLItem(parent)
+{
+ m_vertexShaderFilename = ":/shaders/vshader.vsh";
+ m_eye = 2.5 * v_XYZ;
+
+}
+
+MMScene::~MMScene()
+{
+
+}
+
+void MMScene::paintUnderQmlScene()
+{
+ m_renderer->pushMvMatrix();
+ // drawAxes(2.5);
+ drawTriangles();
+ m_renderer->popMvMatrix();
+}
+
+void MMScene::paintOnTopOfQmlScene()
+{
+ m_renderer->pushMvMatrix();
+ drawAxes(2.5);
+ drawTriangles();
+ m_renderer->popMvMatrix();
+}
+
+void MMScene::setupGeometry()
+{
+ //Now we create the geometry. Every corner needs a vertex, a normal, a color and a texture,
+ //although normal and texture are not used for basic rendering.
+ QVector3D v00 = QVector3D(0.0, 0.0, 0.0);
+ QVector3D v01 = QVector3D(1.0, 0.0, 0.0);
+ QVector3D v02 = QVector3D(0.0, 1.0, 0.0);
+ QVector3D n0 = QVector3D(0.0, 0.0, 1.0); //dummy normal
+ QVector3D t0 = QVector3D(0.0,0.0,0.0); //dummy texture
+
+ //append the vertices for the triangle
+ m_points.append(GLPoint(v00, n0, t0, GLColorRgba::clRed));
+ m_points.append(GLPoint(v01, n0, t0, GLColorRgba::clGreen));
+ m_points.append(GLPoint(v02, n0, t0, GLColorRgba::clBlue));
+
+ QVector3D v10 = QVector3D(1.0, 1.0, 0.0);
+ QVector3D v11 = QVector3D(1.0, 0.0, 0.0);
+ QVector3D v12 = QVector3D(0.0, 1.0, 0.0);
+
+ //append the vertices for the triangle
+ m_points.append(GLPoint(v10, n0, t0, GLColorRgba::clRed));
+ m_points.append(GLPoint(v11, n0, t0, GLColorRgba::clGreen));
+ m_points.append(GLPoint(v12, n0, t0, GLColorRgba::clBlue));
+
+ m_colorArrayEnabled = true;
+
+ m_geometryIsValid = true;
+}
+
+void MMScene::drawTriangles()
+{
+ renderer()->setLightingEnabled(m_lightingEnabled);
+ renderer()->setColorArrayEnabled(m_colorArrayEnabled);
+ renderer()->setTextureEnabled(false);
+
+ //enable required arrays
+ int stride = sizeof(GLPoint);
+ for(int i = 0; i < m_points.length(); i += 3)
+ {
+ if(i > m_lastAxesPoint || i < m_firstAxesPoint)
+ {
+ renderer()->activateAttributeArray(GLESRenderer::VERTEX_LOCATION,
+ m_points[i].vertexPointer(), stride);
+ renderer()->activateAttributeArray(GLESRenderer::NORMAL_LOCATION,
+ m_points[i].normalPointer(), stride);
+ renderer()->activateAttributeArray(GLESRenderer::TEXCOORD_LOCATION,
+ m_points[i].texCoordPointer(), stride);
+ renderer()->activateAttributeArray(GLESRenderer::COLOR_LOCATION,
+ m_points[i].colorPointer(), stride);
+
+ glDrawArrays(GL_TRIANGLES, 0, 3);
+ }
+ }
+ renderer()->disableAttributeArrays();
+}
+