Mon, 20 Jun 2022 22:41:34 +0300
a bit of refactor in mapbox::util::nth
#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 setUniformMatrix(const char* name, const glm::mat4& value); void setUniformVector(const char* name, const glm::vec4& value); 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(); };