Wed, 29 Jun 2022 16:19:05 +0300
simplify a bit
#pragma once #include "src/gl/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 { bool isInitialized = false; QOpenGLBuffer buffer; QOpenGLShader vertexShader; QOpenGLShader fragmentShader; std::unique_ptr<gl::ShaderProgram> program = nullptr; QOpenGLVertexArrayObject vertexArrayObject; int 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(); };