Sun, 12 Jun 2022 23:59:37 +0300
Reimplement the axes program as a layer that can be added to PartRenderer
#pragma once #include "common.h" struct GLAttributeSpec { GLenum type; int offset; int tuplesize; int stride; }; //! @brief A collection of a single VAO with a single VBO, //! a vertex shader and a fragment shader. class BasicShader final : protected QOpenGLFunctions { bool isInitialized = false; QOpenGLBuffer buffer; QOpenGLShader vertexShader; QOpenGLShader fragmentShader; std::unique_ptr<gl::ShaderProgram> program = nullptr; QOpenGLVertexArrayObject vertexArrayObject; std::size_t vertexCount = 0; public: BasicShader(); ~BasicShader(); Q_DISABLE_COPY(BasicShader) void initialize( const char* vertexShaderSource, const char* fragmentShaderSource, QOpenGLBuffer::UsagePattern usagePattern, const std::vector<GLAttributeSpec>& attributeSpecs); void setMvpMatrix(const glm::mat4& newMvpMatrix); void bufferData(const void* data, std::size_t count, std::size_t size); void draw(GLenum drawMode); void teardown(); };