/** * Copyright (c) 2026 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "display/texture/texture.h" #include "error/errorgl.h" typedef struct { GLuint id; texture_t texture; } framebuffergl_t; /** * Initializes the backbuffer framebuffer. (OpenGL implementation). */ errorret_t frameBufferGLInitBackBuffer(void); /** * Gets the height of the framebuffer. (OpenGL implementation). * * @param framebuffer The framebuffer to get the height of. * @return The height of the framebuffer, or 0 if the framebuffer is NULL. */ uint32_t frameBufferGLGetWidth(const framebuffergl_t *framebuffer); /** * Initializes an OpenGL style framebuffer. * * @param fb The framebuffer to initialize. * @param width The width of the framebuffer. * @param height The height of the framebuffer. * @return Either error or not. */ uint32_t frameBufferGLGetHeight(const framebuffergl_t *framebuffer); /** * Gets the width of the framebuffer. (OpenGL implementation). * * @param framebuffer The framebuffer to get the width of. * @return The width of the framebuffer, or 0 if the framebuffer is NULL. */ errorret_t frameBufferGLBind(framebuffergl_t *framebuffer); /** * Clears the framebuffer with the specified flags and color. * * @param flags The clear flags. * @param color The clear color. */ void frameBufferGLClear(const uint8_t flags, const color_t color); #ifdef DUSK_DISPLAY_SIZE_DYNAMIC /** * Initializes an OpenGL style framebuffer. * * @param fb The framebuffer to initialize. * @param width The width of the framebuffer. * @param height The height of the framebuffer. * @return Either error or not. */ errorret_t frameBufferGLInit( framebuffergl_t *fb, const uint32_t width, const uint32_t height ); /** * Disposes of the framebuffer. Will also be used for request disposing of the * backbuffer. * * @param framebuffer The framebuffer to dispose of. */ errorret_t frameBufferGLDispose(framebuffergl_t *framebuffer); #endif