// "Copyright [2023] " #ifndef ENGINE_ENGINE_DRAW_HPP_ #define ENGINE_ENGINE_DRAW_HPP_ #include #include #include #include "./constants.hpp" struct offsetsStruct { offsetsStruct() : xOffset(0), yOffset(0), zOffset(0) {} float xOffset, yOffset, zOffset; }; struct drawFigureReturn { drawFigureReturn() : success(-1), VAO(0), VBO(0), EBO(0) {} int success; unsigned int VAO; unsigned int VBO; unsigned int EBO; }; drawFigureReturn drawFigure(const int whatToDraw); drawFigureReturn drawSquare( const float squareVertices[] = constants::SQUARE_VERTICES, const size_t squareVerticesSize = constants::SQUARE_VERTICES_SIZE, const unsigned int squareIndices[] = constants::SQUARE_INDICES, const size_t squareIndicesSize = constants::SQUARE_INDICES_SIZE, const char* vertexShaderSource = constants::VERTEX_SHADER_SOURCE, const char* fragmentShaderSource = constants::FRAGMENT_SHADER_SOURCE, const bool colorIncluded = false, const bool textureIncluded = false, const offsetsStruct offsets = offsetsStruct()); void doDrawElements(const unsigned int shaderProgram, const unsigned int vertexArrayObject, const GLenum drawArrayMode, const GLenum drawType, const int numberOfElementsToDraw); drawFigureReturn drawTriangleClass( const char* vertexPath, const char* fragmentPath, const float triangleVertices[], const size_t triangleVerticesSize, const bool colorIncluded = false, const bool textureIncluded = false, const offsetsStruct offsets = offsetsStruct()); void updateUniformColor(const unsigned int shaderProgram, const GLchar* uniformName); void doDrawArrays(const unsigned int shaderProgram, const unsigned int vertexArrayObject, const GLenum drawArrayMode, const int firstIndex, const unsigned int numberOfIndicesToBeRendered); drawFigureReturn drawDebilMode( const char* vertexPath = constants::VERTEX_SHADER_SOURCE_FILENAME, const char* fragmentPath = constants::FRAGMENT_SHADER_SOURCE_FILENAME, const float vertices[] = constants::TRIANGLE_VERTICES, const size_t verticesSize = constants::TRIANGLE_VERTICES_SIZE, const unsigned int indices[] = constants::TEXTURE_INDICES, const size_t indicesSize = constants::TEXTURE_INDICES_SIZE); #endif // ENGINE_ENGINE_DRAW_HPP_