Brenta Engine Build Guide Contributing Data structures Files Github

Brenta Engine is a simple 3D engine written in modern C++/OpenGL using the Entity Component System architecture. The engine was created by Giovanni Santini in the summer of 2024, the name is inspired by the Brenta Dolimites in the Italian Alps.

#include <brenta/engine.hpp>

int main()
{

  // Setup
  
  engine::builder()
    .with(logger::builder()
          .level(oak::level::debug))
    .with(window::builder()
          .title("load opengl test")
          .width(screen_width)
          .height(screen_height))
    .build();
  auto engine = engine::managed();

  // Loop
  
  while (!window::should_close())
  {
    if (window::is_key_pressed(GLFW_KEY_ESCAPE))
      window::close();
    
    // Update logic...
    // Draw...
    gl::set_color(0.2f, 0.3f, 0.3f, 1.0f);
    gl::clear();

    window::poll_events();
    window::swap_buffers();
  }
  return 0;
}

Demos

examples/shadertoy.cpp:

shadertoy-demo.gif

examples/mandelbrot-set.cpp:

mandlebrot-demo.gif

examples/logger.cpp:

$ ./build/logger 
[ level=info ] logger: set log file to /tmp/brenta_logs
[ level=info ] logger: initialized
[ level=info ] window: set context to OpenGL version: 3.3
[ level=info ] window: set OpenGL profile to core
[ level=info ] window: disabled MSAA
[ level=info ] window: disabled VSync
[ level=info ] window: mouse capture disabled
[ level=debug ] window: set framebuffer size callback
[ level=info ] window: initialized
[ level=info ] gl: enabled GL_DEPTH_TEST
[ level=info ] gl: enabled GL_BLEND (transparency)
[ level=info ] gl: enabled GL_CULL_FACE
[ level=info ] gl: enabled GL_MULTISAMPLE
[ level=info ] gl: initialized
[ level=info ] engine: initialized
[ level=info ] Hello, World!
[ level=info ] gl: terminated
[ level=info ] window: terminated

examples/demo/src/main.cpp:

demo.gif

The Submodules

The Engine is composed of several submodules, which are mostly independent from each other:

Additionally, the engine provides multiple classes for various functionalities such as wrappers around opengl primitives, or managing the camera or the time. Classes often provide a Builder to initalize them nicely.

License

The engine is released under the MIT license.

./>