From c96d05decbbb80de3d56b624fba9e750d68c30c7 Mon Sep 17 00:00:00 2001 From: Anakin Date: Fri, 30 Dec 2016 15:39:31 +0100 Subject: [PATCH] fixed the triangle problem :D next: add texture import, test multiedged mesh, add open button, add drag n' drop --- QtMeshViewer/Source/GeometryEngine.cpp | 68 ++------------------------ 1 file changed, 3 insertions(+), 65 deletions(-) diff --git a/QtMeshViewer/Source/GeometryEngine.cpp b/QtMeshViewer/Source/GeometryEngine.cpp index 2ad5e56..84fe2d6 100644 --- a/QtMeshViewer/Source/GeometryEngine.cpp +++ b/QtMeshViewer/Source/GeometryEngine.cpp @@ -38,7 +38,7 @@ void GeometryEngine::initCubeGeometry() try { - MshFile file("..\\Release\\Msh\\cube.msh"); + MshFile file("..\\Release\\Msh\\cubeTex.msh"); m_models = file.getModels(); //TODO use models local, apply MVP directly to the vertex, save size and tex index info @@ -50,75 +50,13 @@ void GeometryEngine::initCubeGeometry() auto msg = e.what(); } - QVector vertices = { - // Vertex data for face 0 - {QVector3D(-1.0f, -1.0f, 1.0f), QVector2D(0.0f, 0.0f)}, // v0 - {QVector3D( 1.0f, -1.0f, 1.0f), QVector2D(0.33f, 0.0f)}, // v1 - {QVector3D(-1.0f, 1.0f, 1.0f), QVector2D(0.0f, 0.5f)}, // v2 - {QVector3D( 1.0f, 1.0f, 1.0f), QVector2D(0.33f, 0.5f)}, // v3 - - // Vertex data for face 1 - {QVector3D( 1.0f, -1.0f, 1.0f), QVector2D( 0.0f, 0.5f)}, // v4 - {QVector3D( 1.0f, -1.0f, -1.0f), QVector2D(0.33f, 0.5f)}, // v5 - {QVector3D( 1.0f, 1.0f, 1.0f), QVector2D(0.0f, 1.0f)}, // v6 - {QVector3D( 1.0f, 1.0f, -1.0f), QVector2D(0.33f, 1.0f)}, // v7 - - // Vertex data for face 2 - {QVector3D( 1.0f, -1.0f, -1.0f), QVector2D(0.66f, 0.5f)}, // v8 - {QVector3D(-1.0f, -1.0f, -1.0f), QVector2D(1.0f, 0.5f)}, // v9 - {QVector3D( 1.0f, 1.0f, -1.0f), QVector2D(0.66f, 1.0f)}, // v10 - {QVector3D(-1.0f, 1.0f, -1.0f), QVector2D(1.0f, 1.0f)}, // v11 - - // Vertex data for face 3 - {QVector3D(-1.0f, -1.0f, -1.0f), QVector2D(0.66f, 0.0f)}, // v12 - {QVector3D(-1.0f, -1.0f, 1.0f), QVector2D(1.0f, 0.0f)}, // v13 - {QVector3D(-1.0f, 1.0f, -1.0f), QVector2D(0.66f, 0.5f)}, // v14 - {QVector3D(-1.0f, 1.0f, 1.0f), QVector2D(1.0f, 0.5f)}, // v15 - - // Vertex data for face 4 - {QVector3D(-1.0f, -1.0f, -1.0f), QVector2D(0.33f, 0.0f)}, // v16 - {QVector3D( 1.0f, -1.0f, -1.0f), QVector2D(0.66f, 0.0f)}, // v17 - {QVector3D(-1.0f, -1.0f, 1.0f), QVector2D(0.33f, 0.5f)}, // v18 - {QVector3D( 1.0f, -1.0f, 1.0f), QVector2D(0.66f, 0.5f)}, // v19 - - // Vertex data for face 5 - {QVector3D(-1.0f, 1.0f, 1.0f), QVector2D(0.33f, 0.5f)}, // v20 - {QVector3D( 1.0f, 1.0f, 1.0f), QVector2D(0.66f, 0.5f)}, // v21 - {QVector3D(-1.0f, 1.0f, -1.0f), QVector2D(0.33f, 1.0f)}, // v22 - {QVector3D( 1.0f, 1.0f, -1.0f), QVector2D(0.66f, 1.0f)} // v23 - }; - - QVector indices = { - 0,1,2, //vorne (4) - 3,2,1, - 4,5,7, //rechts (1) - 6,4,7, - 8,9,11, //hinten (3)* - 8,11,10, - 14,12,13, //links (6)* - 14,13,15, - 18,16,17, //unten (5) - 19,18,17, - 23,22,20, //oben (2)* - 23,20,21 - }; - // Transfer vertex data to VBO 0 m_arrayBuf.bind(); m_arrayBuf.allocate(m_models->first()->segmList.front()->vertices.data(), m_models->first()->segmList.front()->vertices.size() * sizeof(VertexData)); // Transfer index data to VBO 1 m_indexBuf.bind(); - m_indexBuf.allocate(m_models->first()->segmList.front()->indices.data(), m_models->first()->segmList.front()->indices.size() * sizeof(GLushort)); - - - //// Transfer vertex data to VBO 0 - //m_arrayBuf.bind(); - //m_arrayBuf.allocate(vertices.data(), vertices.size() * sizeof(VertexData)); - - //// Transfer index data to VBO 1 - //m_indexBuf.bind(); - //m_indexBuf.allocate(indices.data(), indices.size() * sizeof(GLushort)); + m_indexBuf.allocate(m_models->first()->segmList.front()->indices.data(), m_models->first()->segmList.front()->indices.size() * sizeof(GLuint)); // load the texture initTexture(); @@ -173,5 +111,5 @@ void GeometryEngine::drawGeometry(QOpenGLShaderProgram *program) program->setAttributeBuffer(texcoordLocation, GL_FLOAT, offset, 2, sizeof(VertexData)); // Draw cube geometry using indices from VBO 1 - glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_SHORT, 0); + glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, 0); }