#include #include #include "Graphics.h" #include "Shader.h" Graphics::Graphics() : window(nullptr), VAO(0), VBO(0) {} Graphics::~Graphics() { Shutdown(); } void Graphics::Initialize(GLFWwindow* window) { this->window = window; if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { std::cerr << "Failed to initialize GLAD" << std::endl; return; } LoadShaders(); SetupBuffers(); } void Graphics::LoadShaders() { shader = Shader(RESOURCES_PATH"shaders/shader.vs", RESOURCES_PATH"shaders/shader.fs"); } void Graphics::SetupBuffers() { float vertices[] = { 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, -0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f }; glGenVertexArrays(1, &VAO); glGenBuffers(1, &VBO); glBindVertexArray(VAO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0); glEnableVertexAttribArray(0); glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3 * sizeof(float))); glEnableVertexAttribArray(1); glBindBuffer(GL_ARRAY_BUFFER, 0); glBindVertexArray(0); } void Graphics::FramebufferSizeCallback(GLFWwindow* window, int width, int height) { glViewport(0, 0, width, height); } void Graphics::Render() { glClear(GL_COLOR_BUFFER_BIT); shader.Use(); glBindVertexArray(VAO); glDrawArrays(GL_TRIANGLES, 0, 3); } void Graphics::Shutdown() { glDeleteVertexArrays(1, &VAO); glDeleteBuffers(1, &VBO); }