Framebuffer done.

This commit is contained in:
2025-08-15 18:50:43 -05:00
parent cbdc271a5e
commit d1ab8b0cc8
9 changed files with 133 additions and 36 deletions

View File

@@ -11,27 +11,16 @@
#include "display/camera/camera.h"
#if RENDER_USE_FRAMEBUFFER
SDL_Texture *RENDER_BACKBUFFER;
#else
framebuffer_t RENDER_BACKBUFFER;
#endif
errorret_t renderBackBufferInit(void) {
#if RENDER_USE_FRAMEBUFFER
// RENDER_BACKBUFFER = SDL_CreateTexture(
// RENDER_RENDERER,
// SDL_PIXELFORMAT_RGBA8888,
// SDL_TEXTUREACCESS_TARGET,
// RENDER_WIDTH,
// RENDER_HEIGHT
// );
if(!RENDER_BACKBUFFER) {
errorThrow("SDL_CreateTexture failed: %s", SDL_GetError());
}
// Make sure we unbind the back buffer after creation
// SDL_SetRenderTarget(RENDER_RENDERER, NULL);
frameBufferInit(
&RENDER_BACKBUFFER,
RENDER_WIDTH,
RENDER_HEIGHT
);
#else
// No back buffer needed for window rendering
#endif
@@ -41,7 +30,7 @@ errorret_t renderBackBufferInit(void) {
void renderBackBufferBind(void) {
#if RENDER_USE_FRAMEBUFFER
// SDL_SetRenderTarget(RENDER_RENDERER, RENDER_BACKBUFFER);
frameBufferBind(&RENDER_BACKBUFFER);
#endif
// Fill background with cornflower blue.
@@ -51,7 +40,7 @@ void renderBackBufferBind(void) {
void renderBackBufferUnbind(void) {
#if RENDER_USE_FRAMEBUFFER
// SDL_SetRenderTarget(RENDER_RENDERER, NULL);
frameBufferBind(NULL);
#endif
}
@@ -82,11 +71,11 @@ void renderBackBufferDraw(void) {
// Draw the back buffer texture
spriteBatchClear();
spriteBatchPush(
NULL,
&RENDER_BACKBUFFER.texture,
renderX, renderY,
renderX+renderWidth, renderY+renderHeight,
0xFF, 0x00, 0xFF, 0xFF,
0, 0, 1, 1
0xFF, 0xFF, 0xFF, 0xFF,
0, 1, 1, 0
);
spriteBatchFlush();
cameraScreenPop();
@@ -97,8 +86,7 @@ void renderBackBufferDraw(void) {
errorret_t renderBackBufferDispose(void) {
#if RENDER_USE_FRAMEBUFFER
SDL_DestroyTexture(RENDER_BACKBUFFER);
RENDER_BACKBUFFER = NULL;
frameBufferDispose(&RENDER_BACKBUFFER);
#endif
errorOk();