blah/README.md
2020-12-26 14:44:48 -08:00

2.1 KiB

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;
}