Chroma Framework - development update #2

It's been almost a month since I last wrote anything on this piece of shit blog of mine. I did not come back empty-handed, however! Here's some more details on how Chroma moved forward.

Audio system

Last time I posted here nobody could hear anything coming out of that framework. That has changed. Developers can now play both music and sounds on different channels. There is access to the post-mix waveform that can be modified or even overwritten by user code - this allows the creative folk to synthesize their own sounds as they please. Everything sits on top of SDL_mixer. It's glorious.

Cameras

Yep, you're reading that right. Cameras. They can be "attached" to render targets, or used from RenderContext directly, which operates on the currently active render target. This means that any call to WithCamera from RenderTo method calls will result in that target using the provided camera!

protected override void Draw(RenderContext context)
{
    context.RenderTo(_tgt, () =>
    {
        context.WithCamera(_cam, () =>
        {
            context.DrawTexture(_tex, Vector2.Zero, Vector2.One, Vector2.Zero, 0f);
        });
    });

    context.DrawTexture(_tgt, Vector2.Zero, Vector2.One, Vector2.Zero, 0f);
}

Boom. Just like that.

Bug-fixes

Of course, where there is development, fuck-ups usually follow and Chroma is no exception. A multitude of bugs were fixed. How many exactly I have no goddamn clue. You'll have to check that once Chroma goes open-source in June.

NuGet package

Chroma can now be used easily by simply downloading the NuGet package I have prepared. No bullshit source tree set-ups required. It's wonderful and you should try it.

Documentation

There's still none.

Someone gave a fuck!

And actually made both a library for, and an application utilizing Chroma. See these in action. Apparently their creative drive has been inspired by how Chroma handles all the tedious work developers have to do in order to get anything done. Give that dude some love.


vdd - May 17, 2020