Go to file
2020-12-25 18:47:02 -08:00
private/blah more graphics cleanup - removing Shader Attribute Info 2020-12-24 03:01:05 -08:00
public more graphics cleanup - removing Shader Attribute Info 2020-12-24 03:01:05 -08:00
.gitignore first true commit 2020-08-26 00:38:01 -07:00
CMakeLists.txt refactoring rendering backend a little 2020-12-23 16:16:09 -08:00
LICENSE Initial commit 2020-08-26 00:03:51 -07:00
README.md clarified readme 2020-12-25 18:47:02 -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()
{
	Graphics::clear(Graphics::backbuffer, 0x00000000);
	
	Vec2 center = Vec2(App::draw_width(), App::draw_height()) / 2;
	float rotation = Time::elapsed * Calc::TAU;
	Mat3x2 transform = Mat3x2::create_transform(center, Vec2::zero, Vec2::one, rotation);

	batch.push_matrix(transform);
	batch.rect(Rect(-32, -32, 64, 64), 0xff0000);
	batch.pop_matrix();
	
	batch.render(Graphics::backbuffer);
	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;
}