Go to file
Noel Berry a1baaaf298 updated to SDL 2.24.0, simplifies Windows High DPI
Although it has an issue where the Drawable Size can't really be determined from SDL anymore with D3D11... So now the D3D11 renderer returns it's backbuffer size, until this issue is resolved in SDL / I learn what the correct thing to do is.
2022-08-21 14:48:46 -07:00
include slightly nicer BLAH_ASSERT macro 2022-08-21 12:25:36 -07:00
src updated to SDL 2.24.0, simplifies Windows High DPI 2022-08-21 14:48:46 -07:00
.gitignore first true commit 2020-08-26 00:38:01 -07:00
CMakeLists.txt updated to SDL 2.24.0, simplifies Windows High DPI 2022-08-21 14:48:46 -07:00
LICENSE Updated LICENSE year 2022-01-04 14:23:51 -08:00
README.md clarified note on shader abstraction 2022-02-10 12:26:47 -08:00

blah

A small 2D C++ Game Framework, using few dependencies and simple code to maintain easy building and portability.

☆ This will likely see breaking changes! Use at your own risk! ☆

a sample application

#include <blah.h>
using namespace Blah;

Batch batch;

int main()
{
    Config config;
    config.name = "blah app";
    config.on_render = []()
    {
        App::backbuffer()->clear(Color::black);

        auto center = App::get_backbuffer_size() / 2;
        auto rotation = Time::seconds * Calc::TAU;
        auto transform = Mat3x2f::create_transform(center, Vec2f::zero, Vec2f::one, rotation);

        batch.push_matrix(transform);
        batch.rect(Rectf(-32, -32, 64, 64), Color::red);
        batch.pop_matrix();

        batch.render();
        batch.clear();
    };

    App::run(&config);
    return 0;
}

building

  • Requires C++17 and CMake 3.14+
  • A single Platform implementation must be enabled in CMake:
    • SDL2 (Default) BLAH_PLATFORM_SDL2
    • WIN32 (Unfinished) BLAH_PLATFORM_WIN32
    • Additional platforms can be added by implementing the Platform Backend
  • At least one Renderer implementation must be enabled in CMake:
    • OpenGL (Default on Linux/macOS) BLAH_RENDERER_OPENGL
    • D3D11 (Default on Windows) BLAH_RENDERER_D3D11
    • Additional renderers can be added by implementing the Renderer Backend

notes

  • There's no Shader abstraction, so you need to swap between GLSL/HLSL depending on the Renderer.
  • Only floatN/mat3x2/mat4x4 uniforms are supported.
  • There's no Audio API or backend implementation yet.
  • No threaded rendering so it will explode if you try that.