mirror of
https://github.com/NoelFB/blah.git
synced 2025-02-18 12:48:27 +08:00
Mirror of https://github.com/NoelFB/blah
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. |
||
---|---|---|
include | ||
src | ||
.gitignore | ||
CMakeLists.txt | ||
LICENSE | ||
README.md |
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
- SDL2 (Default)
- 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
- OpenGL (Default on Linux/macOS)
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.