mirror of
https://github.com/NoelFB/blah.git
synced 2024-11-25 16:18:57 +08:00
Mirror of https://github.com/NoelFB/blah
dcd3e11b16
1) Over time the total amount of files has decreased, and so it made sense to just simplify the folder structure and remove all of the subfolders. 2) Refactor the String class to utilize the existing Vector and StackVector classes instead of managing everything itself. |
||
---|---|---|
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.