engineer-thesis-WUT/Engine/engine/draw.hpp

64 lines
2.4 KiB
C++

// "Copyright [2023] <Krzysztof Rudnicki>"
#ifndef ENGINE_ENGINE_DRAW_HPP_
#define ENGINE_ENGINE_DRAW_HPP_
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <string>
#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_