Engine2026/engine/Backend/Backend.cpp
Claire Schwarzer 3ffed086b1 stuff
2026-07-09 18:38:46 +02:00

104 lines
No EOL
2.5 KiB
C++

#include "Backend.h"
namespace engine::Backend
{
GLFWwindow* window;
int SCREEN_WIDTH = 1920;
int SCREEN_HEIGHT = 1080;
bool Init(const char* title, int width = SCREEN_WIDTH, int height = SCREEN_HEIGHT)
{
SCREEN_WIDTH = width;
SCREEN_HEIGHT = height;
// Initialize GLFW
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
// Create GLFW Window
window = glfwCreateWindow(SCREEN_WIDTH, SCREEN_HEIGHT, title, NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return false;
}
glfwMakeContextCurrent(window);
// Initialize GLAD
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return false;
}
// Initialize Viewport & setup resize callback
glViewport(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
glfwSetFramebufferSizeCallback(window, window_resize_callback);
glfwSetCursorPosCallback(window, mouse_callback);
glfwSetScrollCallback(window, scroll_callback);
// depth testing
glEnable(GL_DEPTH_TEST);
return true;
}
void PreFrame()
{
// Input processing
processInput(window);
// Depth buffer
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
void PostFrame()
{
// Call events & swap buffers
glfwSwapBuffers(window);
glfwPollEvents();
}
void Cleanup()
{
glfwTerminate();
}
bool isWindowOpen()
{
return !glfwWindowShouldClose(window);
}
void window_resize_callback(GLFWwindow* window2, int width, int height)
{
glViewport(0, 0, width, height);
SCREEN_WIDTH = width;
SCREEN_HEIGHT = height;
}
void processInput(GLFWwindow* window2)
{
// Close on Escape
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
glfwSetWindowShouldClose(window, true);
}
void mouse_callback(GLFWwindow* window2, double xposIn, double yposIn)
{
}
void scroll_callback(GLFWwindow* window2, double xoffset, double yoffset)
{
}
GLFWwindow* getWindow()
{
return window;
}
}