diff --git a/IndoorMap.pro b/IndoorMap.pro index 59635a4..33bce88 100644 --- a/IndoorMap.pro +++ b/IndoorMap.pro @@ -4,7 +4,7 @@ # #------------------------------------------------- -QT += core gui opengl +QT += core gui CONFIG += c++17 -g3 -O0 @@ -18,8 +18,6 @@ DEFINES += WITH_DEBUG_LOG win32 { DEFINES += _USE_MATH_DEFINES - - LIBS+= -llibGLESV2d } INCLUDEPATH += \ diff --git a/MainController.cpp b/MainController.cpp index 08544cc..2ea894b 100644 --- a/MainController.cpp +++ b/MainController.cpp @@ -113,7 +113,7 @@ MainController::MainController() { //mapModel->load("/mnt/vm/paper/diss/data/maps/test_in_out_overlap.xml"); - mapModel->load("/mnt/vm/paper/diss/data/maps/walkmodel_stairs3.xml"); +// mapModel->load("/mnt/vm/paper/diss/data/maps/walkmodel_stairs3.xml"); //mapModel->load("/mnt/vm/paper/diss/data/maps/SHL42_nm.xml"); //mapModel->load("/apps/paper/diss/data/maps/SHL41_nm.xml"); diff --git a/mapview/3D/MV3DElementStair.h b/mapview/3D/MV3DElementStair.h index 1b90802..f63f3e5 100644 --- a/mapview/3D/MV3DElementStair.h +++ b/mapview/3D/MV3DElementStair.h @@ -58,7 +58,7 @@ protected: rs.shader->setColor(1.0, 0.55, 0.55); rs.shader->setVertices(data.getVertices().data()); rs.shader->setNormals(data.getNormals().data()); - glDrawArrays(GL_TRIANGLES, 0, data.getVertices().size()/3); + rs.funcs->glDrawArrays(GL_TRIANGLES, 0, data.getVertices().size()/3); rs.shader->unsetVertices(); rs.shader->unsetNormals(); rs.shader->release(); diff --git a/mapview/3D/MapView3D.cpp b/mapview/3D/MapView3D.cpp index 760e4b9..d3419cc 100644 --- a/mapview/3D/MapView3D.cpp +++ b/mapview/3D/MapView3D.cpp @@ -101,12 +101,16 @@ MapView3D::MapView3D(QWidget *parent) : QOpenGLWidget(parent) { grabGesture(Qt::PanGesture); grabGesture(Qt::PinchGesture); - auto format = QSurfaceFormat(); - //format.setVersion(4,3); - format.setSamples(2); - //format.setProfile(QSurfaceFormat::CoreProfile); + auto format = QSurfaceFormat(); + format.setVersion(3,3); + //format.setSamples(2); + auto ver = format.version(); - setFormat(format); + std::cout << ver.first << " " << ver.second << std::endl; + format.setProfile(QSurfaceFormat::CoreProfile); + format.setOption(QSurfaceFormat::DebugContext); + + setFormat(format); } @@ -116,6 +120,7 @@ void MapView3D::initializeGL() { //setFormat(QGLFormat(QGL::SampleBuffers)); QOpenGLWidget::initializeGL(); + initializeOpenGLFunctions(); // this should be the default!! glCullFace(GL_BACK); @@ -124,8 +129,7 @@ void MapView3D::initializeGL() { // additional settings glEnable(GL_DEPTH_TEST); - glClearColor(0.9, 0.9, 1.0, 1.0); - + glClearColor(0.5, 0.5, 0.5, 1.0); } void MapView3D::paintGL() { @@ -283,7 +287,7 @@ void MapView3D::layerChange() { void MapView3D::draw() { - static RenderSettings rs = RenderSettings(new Shader()); + static RenderSettings rs = RenderSettings(new Shader(), this); // view QMatrix4x4 V; diff --git a/mapview/3D/MapView3D.h b/mapview/3D/MapView3D.h index f421026..6092649 100644 --- a/mapview/3D/MapView3D.h +++ b/mapview/3D/MapView3D.h @@ -4,7 +4,8 @@ #include "../../fixC11.h" #include -#include +#include +#include #include @@ -16,7 +17,7 @@ class NavMeshModel; class FloorplanRenderer; class FloorplanRendererModel; -class MapView3D : public QOpenGLWidget { +class MapView3D : public QOpenGLWidget, protected QOpenGLFunctions { Q_OBJECT diff --git a/mapview/3D/floorplan/FloorplanRenderer.h b/mapview/3D/floorplan/FloorplanRenderer.h index 7460ada..c7ed2cf 100644 --- a/mapview/3D/floorplan/FloorplanRenderer.h +++ b/mapview/3D/floorplan/FloorplanRenderer.h @@ -8,6 +8,7 @@ #include #include +#include #include "../misc/Renderable3D.h" #include "../misc/Shader.h" @@ -35,7 +36,7 @@ public: rs.shader->setVertices(rt.getVertices()); rs.shader->setNormals(rt.getNormals()); rs.shader->setVertexColor(rt.getRGBA()); - glDrawArrays(GL_TRIANGLES, 0, rt.count()); + rs.funcs->glDrawArrays(GL_TRIANGLES, 0, rt.count()); rs.shader->unsetVertices(); rs.shader->unsetNormals(); rs.shader->unsetVertexColor(); @@ -45,7 +46,7 @@ public: rs.shader->setColor(0,0,0,128); rs.shader->setVertices(rt2.getVertices()); //rs.shader->setVertexColor(rt2.getRGBA()); - glDrawArrays(GL_LINES, 0, rt2.count()); + rs.funcs->glDrawArrays(GL_LINES, 0, rt2.count()); rs.shader->unsetVertices(); //rs.shader->unsetVertexColor(); } @@ -56,8 +57,8 @@ public: /** render the given grid using GL commands */ void renderTransp(const RenderSettings& rs, const RenderTriangle& rt, bool wireframe) { - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + rs.funcs->glEnable(GL_BLEND); + rs.funcs->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); rs.shader->bind(); rs.shader->setModelMatrix(QMatrix4x4()); @@ -65,7 +66,7 @@ public: rs.shader->setVertices(rt.getVertices()); rs.shader->setNormals(rt.getNormals()); rs.shader->setVertexColor(rt.getRGBA()); - glDrawArrays(GL_TRIANGLES, 0, rt.count()); + rs.funcs->glDrawArrays(GL_TRIANGLES, 0, rt.count()); rs.shader->unsetVertices(); rs.shader->unsetNormals(); rs.shader->unsetVertexColor(); @@ -75,14 +76,14 @@ public: rs.shader->setColor(0,0,0,128); rs.shader->setVertices(rt2.getVertices()); //rs.shader->setVertexColor(rt2.getRGBA()); - glDrawArrays(GL_LINES, 0, rt2.count()); + rs.funcs->glDrawArrays(GL_LINES, 0, rt2.count()); rs.shader->unsetVertices(); //rs.shader->unsetVertexColor(); } rs.shader->release(); - glDisable(GL_BLEND); + rs.funcs->glDisable(GL_BLEND); } diff --git a/mapview/3D/misc/Cube.cpp b/mapview/3D/misc/Cube.cpp index de9010e..1fe2342 100644 --- a/mapview/3D/misc/Cube.cpp +++ b/mapview/3D/misc/Cube.cpp @@ -1,6 +1,5 @@ #include "Cube.h" #include "Shader.h" -#include static float cube_vertices[] = { @@ -76,7 +75,7 @@ void Cube::render(const RenderSettings& rs) { rs.shader->setVertices(cube_vertices); rs.shader->setNormals(cube_normals); - glDrawArrays(GL_TRIANGLES, 0, 12*3); + rs.funcs->glDrawArrays(GL_TRIANGLES, 0, 12*3); //glDrawElements(GL_TRIANGLES, +12, GL_INT, cube_vertex_indices); rs.shader->unsetVertices(); rs.shader->unsetNormals(); diff --git a/mapview/3D/misc/Handrail.cpp b/mapview/3D/misc/Handrail.cpp index 3ac2120..fc52d1c 100644 --- a/mapview/3D/misc/Handrail.cpp +++ b/mapview/3D/misc/Handrail.cpp @@ -54,7 +54,7 @@ void Handrail::render(const RenderSettings& rs) { } rs.shader->setVertices(vertices.data()); - glDrawArrays(GL_LINES, 0, vertices.size() / 3); + rs.funcs->glDrawArrays(GL_LINES, 0, vertices.size() / 3); rs.shader->unsetVertices(); rs.shader->release(); diff --git a/mapview/3D/misc/Outline.cpp b/mapview/3D/misc/Outline.cpp index b11be41..e153acb 100644 --- a/mapview/3D/misc/Outline.cpp +++ b/mapview/3D/misc/Outline.cpp @@ -26,7 +26,7 @@ void Outline::render(const RenderSettings& rs) { rs.shader->setColor(color.x, color.y, color.z); rs.shader->setVertices(triangles.getVertices().data()); rs.shader->setNormals(triangles.getNormals().data()); - glDrawArrays(GL_TRIANGLES, 0, triangles.getVertices().size() / 3); + rs.funcs->glDrawArrays(GL_TRIANGLES, 0, triangles.getVertices().size() / 3); rs.shader->unsetVertices(); rs.shader->unsetNormals(); diff --git a/mapview/3D/misc/Renderable3D.h b/mapview/3D/misc/Renderable3D.h index 21d071d..2489252 100644 --- a/mapview/3D/misc/Renderable3D.h +++ b/mapview/3D/misc/Renderable3D.h @@ -1,11 +1,15 @@ #ifndef RENDERABLE3D_H #define RENDERABLE3D_H +#include + class Shader; struct RenderSettings { - Shader* shader = nullptr; - RenderSettings(Shader* shader) : shader(shader) {;} + Shader* shader = nullptr; + QOpenGLFunctions* funcs = nullptr; + + RenderSettings(Shader* shader, QOpenGLFunctions* f) : shader(shader), funcs(f) {;} }; diff --git a/mapview/3D/misc/Window.cpp b/mapview/3D/misc/Window.cpp index ae4d083..cdccd1b 100644 --- a/mapview/3D/misc/Window.cpp +++ b/mapview/3D/misc/Window.cpp @@ -69,20 +69,20 @@ void Window::render(const RenderSettings& rs) { rs.shader->setColor(0.75, 0.85, 1.0, 0.35); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + rs.funcs->glEnable(GL_BLEND); + rs.funcs->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //glDisable(GL_CULL_FACE); rs.shader->setModelMatrix(mat); rs.shader->setVertices(window_vertices); rs.shader->setNormals(window_normals); - glDrawArrays(GL_TRIANGLES, 0, 12); + rs.funcs->glDrawArrays(GL_TRIANGLES, 0, 12); rs.shader->unsetVertices(); rs.shader->unsetNormals(); //glEnable(GL_CULL_FACE); - glDisable(GL_BLEND); + rs.funcs->glDisable(GL_BLEND); rs.shader->release(); diff --git a/mapview/3D/navMesh/NavMeshRenderer.h b/mapview/3D/navMesh/NavMeshRenderer.h index 734130a..0e24a86 100644 --- a/mapview/3D/navMesh/NavMeshRenderer.h +++ b/mapview/3D/navMesh/NavMeshRenderer.h @@ -10,12 +10,13 @@ #include #include +#include #include "../misc/Renderable3D.h" #include "../misc/Shader.h" #include "../misc/TriangleData.h" -class NavMeshRenderer { +class NavMeshRenderer : protected QOpenGLFunctions { private: