Need help with blah?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

NoelFB
322 Stars 28 Forks MIT License 225 Commits 1 Opened issues

Description

A small 2d c++ game framework

Services available

!
?

Need anything else?

Contributors list

# 52,413
C#
Shell
game-fr...
game-fr...
194 commits
# 303,538
gameeng...
crates
game-fr...
game-fr...
3 commits
# 477,639
Shell
HTML
cpp17
game-fr...
1 commit
# 501,927
JavaScr...
Shell
cpp17
game-fr...
1 commit
# 448,995
C
cpp17
game-fr...
game-en...
1 commit
# 1,915
C++
Godot
godoten...
dos
1 commit
# 617,637
cpp17
game-fr...
game-en...
C
1 commit
# 605,001
C
Shell
cpp17
game-fr...
1 commit
# 63,758
Haxe
Shell
Jupyter...
game-fr...
1 commit

blah

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

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

building

  • Requires C++17 and CMake 3.14+
  • A single Platform implementation must be enabled:
    • SDL2 can be enabled in CMake with
      BLAH_PLATFORM_SDL2
      (default)
    • WIN32 (UNFINISHED) can be enabled in CMake with
      BLAH_PLATFORM_WIN32
    • Additional platforms can be added by implementing the Platform Backend
  • A single Graphics implementation must be enabled:
    • OpenGL can be enabled in CMake with
      BLAH_GRAPHICS_OPENGL
      (default)
    • D3D11 can be enabled in CMake with
      BLAH_GRAPHICS_D3D11
    • Additional graphics can be added by implementing the Graphics Backend

notes

  • There's no Shader abstraction, so the Sprite Batcher has hard-coded GLSL/HLSL. This will need to change.
  • 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.

a sample application

#include 
using namespace Blah;

Batch batch; TextureRef tex;

void startup() { tex = Texture::create("player.png"); }

void render() { App::backbuffer->clear(Color::black);

auto center = Vec2f(App::backbuffer->width(), App::backbuffer->height()) / 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.tex(tex, Vec2f(64, 0), Color::white);
batch.pop_matrix();

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

}

int main() { Config config; config.name = "blah app"; config.width = 1280; config.height = 720; config.on_startup = startup; config.on_render = render;

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

}

</blah.h>

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.