diff --git a/CMakeLists.txt b/CMakeLists.txt index ef9c472..bdb27ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,7 @@ qt_add_executable(${AppExec} src/gui/viewport/ViewportGLWidget.cpp src/gui/viewport/GLCamera.cpp src/gui/viewport/GLMesh.cpp + src/gui/viewport/GLGrid.cpp src/gui/network/NetworkGraphicsView.cpp src/gui/network/NetworkGraphicsScene.cpp src/gui/network/Network.cpp diff --git a/src/gui/viewport/GLGrid.cpp b/src/gui/viewport/GLGrid.cpp new file mode 100644 index 0000000..0bbbb21 --- /dev/null +++ b/src/gui/viewport/GLGrid.cpp @@ -0,0 +1,64 @@ +#include "gui/viewport/GLGrid.h" +#include +#include + +GLGrid::GLGrid() +{ + initializeOpenGLFunctions(); + init(); +} + +void GLGrid::init() +{ + glGenVertexArrays(1, &vao); + glBindVertexArray(vao); + + initBuffers(); + + // unbind vertex array + glBindVertexArray(0); +} + +void GLGrid::initBuffers() +{ + constexpr int gridLen = 20; + constexpr int gridLines = 11; + float halfLinesCnt = (gridLines-1)*0.5f; + for(int i=0; i +#include + +class GLGrid +: protected QOpenGLFunctions_3_2_Core +{ +public: + GLGrid(); + GLuint vao; + GLuint vbo; + std::vector vertices; + + void init(); + void initBuffers(); + void bind(); + void unbind(); + void draw(); +}; diff --git a/src/gui/viewport/ViewportGLWidget.cpp b/src/gui/viewport/ViewportGLWidget.cpp index 9d69694..7fef5f0 100644 --- a/src/gui/viewport/ViewportGLWidget.cpp +++ b/src/gui/viewport/ViewportGLWidget.cpp @@ -12,6 +12,7 @@ void ViewportGLWidget::initializeGL() initializeOpenGLFunctions(); triangleMesh_ = std::make_unique(); + gridMesh_ = std::make_unique(); QSurfaceFormat fmt = context()->format(); std::cout << "format: " << (fmt.renderableType() == QSurfaceFormat::OpenGLES ? "GLES" : "Desktop") << "\n"; @@ -120,6 +121,7 @@ void ViewportGLWidget::paintGL() curCamera.setUniform(viewMLoc); + gridMesh_->draw(); triangleMesh_->draw(); } diff --git a/src/gui/viewport/ViewportGLWidget.h b/src/gui/viewport/ViewportGLWidget.h index d1f1b1e..9c46399 100644 --- a/src/gui/viewport/ViewportGLWidget.h +++ b/src/gui/viewport/ViewportGLWidget.h @@ -5,6 +5,7 @@ #include #include "gui/viewport/GLCamera.h" #include "gui/viewport/GLMesh.h" +#include "gui/viewport/GLGrid.h" class ViewportGLWidget : public QOpenGLWidget, protected QOpenGLFunctions_3_2_Core { @@ -14,6 +15,7 @@ public: GLuint shaderProgram; GLCamera curCamera; std::unique_ptr triangleMesh_ ; + std::unique_ptr gridMesh_ ; protected: void initializeGL() override;