feat: add logger class

This commit is contained in:
2025-10-13 17:30:05 +02:00
parent 74a0bfca41
commit 41c9b68eb9
8 changed files with 185 additions and 22 deletions

View File

@@ -1,6 +1,5 @@
#include "engine.h"
#include <iostream>
#include <vector>
#include "../lib/glew/GL/glew.h"
@@ -10,6 +9,7 @@
#include "buffer.h"
#include "camera.h"
#include "logger.h"
#include "mesh.h"
#include "model.h"
#include "shader.h"
@@ -17,32 +17,37 @@
#include "vertex.h"
#include "world.h"
constexpr int SCREEN_WIDTH = 800;
constexpr int SCREEN_HEIGHT = 600;
constexpr double FPS_LIMIT = 1.0 / 60.0;
constexpr int screen_width = 800;
constexpr int screen_height = 600;
constexpr double fps_limit = 1.0 / 60.0;
Engine::Engine()
: window_(nullptr)
, screen_width_(SCREEN_WIDTH)
, screen_height_(SCREEN_HEIGHT)
, screen_width_(screen_width)
, screen_height_(screen_height)
, last_update_time_(0.0)
, last_frame_time_(0.0)
, angle_(0.0)
{
Logger::info("Engine created");
}
Engine::~Engine()
{
Logger::info("Engine destroyed");
destroy();
}
void Engine::initialize()
{
Logger::info("Initializing engine...");
// Initialize GLFW
if (!glfwInit()) {
std::cerr << "Failed to initialize GLFW\n";
Logger::error("Failed to initialize GLFW");
return;
}
Logger::info("GLFW initialized successfully");
glfwWindowHint(GLFW_RESIZABLE, false);
glfwWindowHint(GLFW_SAMPLES, 8);
@@ -51,7 +56,7 @@ void Engine::initialize()
window_ = glfwCreateWindow(screen_width_, screen_height_,
"Daniel Poveda", nullptr, nullptr);
if (window_ == nullptr) {
std::cerr << "Failed to create OpenGL window\n";
Logger::error("Failed to create OpenGL window");
glfwTerminate();
return;
}
@@ -61,30 +66,39 @@ void Engine::initialize()
glEnable(GL_DEPTH_TEST);
glEnable(GL_SCISSOR_TEST);
std::cout << "OpenGL initialized, version: " << glGetString(GL_VERSION)
<< "\n";
Logger::info(
sstr("OpenGL initialized, version: ",
reinterpret_cast<const char*>(glGetString(GL_VERSION))));
// Initialize GLEW
glewExperimental = GL_TRUE;
GLenum err = glewInit();
if (err != GLEW_OK) {
std::cerr << "Failed to initialize GLEW: "
<< glewGetErrorString(err) << "\n";
Logger::error(sstr(
"Failed to initialize GLEW: ",
reinterpret_cast<const char*>(glewGetErrorString(err))));
glfwTerminate();
return;
}
// Initialize default shader
Logger::info("Loading default shaders...");
state::default_shader =
std::make_shared<Shader>("data/vertex.glsl", "data/fragment.glsl");
if (std::strlen(state::default_shader->error()) > 0) {
std::cerr << "Failed to initialize shaders: "
<< state::default_shader->error() << "\n";
Logger::error(sstr("Failed to initialize shaders: ",
state::default_shader->error()));
} else {
Logger::info("Default shaders loaded successfully");
}
Logger::info("Engine initialization complete");
}
void Engine::run()
{
Logger::info("Starting game loop...");
setup();
start();
@@ -98,26 +112,33 @@ void Engine::run()
process_input();
update(delta_time);
if (now - last_frame_time_ >= FPS_LIMIT) {
if (now - last_frame_time_ >= fps_limit) {
render();
last_frame_time_ = now;
}
last_update_time_ = now;
}
Logger::info("Game loop ended");
}
void Engine::destroy()
{
if (window_) {
Logger::info("Shutting down engine...");
glfwTerminate();
window_ = nullptr;
Logger::info("Engine shutdown complete");
}
}
void Engine::setup()
{
Logger::info("Setting up scene...");
// Create world
world_ = std::make_unique<World>();
Logger::info("World created");
// Create camera
camera_ = std::make_shared<Camera>();
@@ -130,6 +151,7 @@ void Engine::setup()
camera_->set_viewport(glm::ivec4(0, 0, screen_width_, screen_height_));
camera_->set_clear_color(glm::vec3(0.1f, 0.1f, 0.1f));
world_->add_entity(camera_);
Logger::info("Camera created and added to world");
// Create triangle mesh
std::vector<Vertex> vertices = {
@@ -141,6 +163,8 @@ void Engine::setup()
auto buffer = std::make_shared<Buffer>(vertices, indices);
mesh_ = std::make_shared<Mesh>();
mesh_->add_buffer(buffer);
Logger::info(sstr("Mesh created with ", vertices.size(),
" vertices and ", indices.size(), " indices"));
// Create 9 models in a 3x3 grid
for (int row = 0; row < 3; ++row) {
@@ -153,6 +177,8 @@ void Engine::setup()
world_->add_entity(model);
}
}
Logger::info(sstr("Created ", models_.size(), " models in scene"));
Logger::info("Scene setup complete");
}
void Engine::start()