Go to file
2020-12-28 18:31:06 -08:00
private/blah very WIP D3D11 support 2020-12-28 18:31:06 -08:00
public very WIP D3D11 support 2020-12-28 18:31:06 -08:00
.gitignore first true commit 2020-08-26 00:38:01 -07:00
CMakeLists.txt very WIP D3D11 support 2020-12-28 18:31:06 -08:00
LICENSE Initial commit 2020-08-26 00:03:51 -07:00
README.md graphics refactor & new organization 2020-12-26 14:44:48 -08:00

blah

a small C++ game framework for 2D games. goal is to be simple and use as few dependencies as possible, to maintain easy building and portability.

this will likely see breaking changes.

building

notes

  • There's no Shader abstraction, so the Sprite Batcher has hard-coded GLSL. This will need to change.
  • The rendering layer may be replaced with FNA3D, BGFX, Sokol, etc, or I may attempt to write custom backends for D3D11/Metal/Vulkan myself, like the OpenGL backend.
  • There's no Audio API or backend implementation yet.
  • No threaded rendering so the OpenGL implementation will explode if you try that

a sample application

#include <blah.h>
using namespace Blah;

Batch batch;

void render()
{
	App::backbuffer->clear(Color::black);
	
	auto center = Vec2(App::backbuffer->width(), App::backbuffer->height()) / 2;
	auto rotation = Time::elapsed * Calc::TAU;
	auto transform = Mat3x2::create_transform(center, Vec2::zero, Vec2::one, rotation);

	batch.push_matrix(transform);
	batch.rect(Rect(-32, -32, 64, 64), Color::red);
	batch.pop_matrix();
	
	batch.render();
	batch.clear();
}

int main()
{
	Config config;
	config.name = "blah app";
	config.width = 1280;
	config.height = 720;
	config.on_render = render;
	
	App::run(&config);
	return 0;
}