26#include <SDL3/SDL_gpu.h>
28#include <Objectively/Object.h>
29#include <Objectively/Vector.h>
31#include <ObjectivelyGPU.h>
43typedef struct RendererInterface RendererInterface;
87 CommandBuffer *commands;
105 Framebuffer *framebuffer;
111 GraphicsPipeline *pipeline;
137 Buffer *vertexBuffer;
143 Uint32 vertexBufferCapacity;
155struct RendererInterface {
160 ObjectInterface objectInterface;
182 void (*beginFrameWith)(
Renderer *self, CommandBuffer *commands, Framebuffer *framebuffer);
192 void (*drawLine)(
const Renderer *self,
const SDL_Point *points,
const SDL_Color *color);
203 void (*drawLines)(
const Renderer *self,
const SDL_Point *points,
size_t count,
const SDL_Color *color);
213 void (*drawRect)(
const Renderer *self,
const SDL_Rect *rect,
const SDL_Color *color);
223 void (*drawRectFilled)(
const Renderer *self,
const SDL_Rect *rect,
const SDL_Color *color);
234 void (*drawTexture)(
const Renderer *self, Texture *texture,
const SDL_Rect *dest,
const SDL_Color *color);
278 Texture *texture,
const SDL_Color *color);
286 void (*renderDeviceDidReset)(
Renderer *self);
294 void (*renderDeviceWillReset)(
Renderer *self);
OBJECTIVELYMVC_EXPORT Class * _Renderer(void)
ObjectivelyMVC base types.
#define OBJECTIVELYMVC_EXPORT
static SDL_Rect clippingFrame(const View *self)
Interleaved position + texcoord + color vertex for GPU upload.
Renderer extends Object with ObjectivelyMVC's UI rendering layer.
RenderDevice * device
The backing RenderDevice.
Object object
The superclass.
RendererInterface * interface
The interface.
Views are the fundamental building blocks of ObjectivelyMVC user interfaces.