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;
151 TransferBuffer *transferBuffer;
163struct RendererInterface {
168 ObjectInterface objectInterface;
190 void (*beginFrameWith)(
Renderer *self, CommandBuffer *commands, Framebuffer *framebuffer);
200 void (*drawLine)(
const Renderer *self,
const SDL_Point *points,
const SDL_Color *color);
211 void (*drawLines)(
const Renderer *self,
const SDL_Point *points,
size_t count,
const SDL_Color *color);
221 void (*drawRect)(
const Renderer *self,
const SDL_Rect *rect,
const SDL_Color *color);
231 void (*drawRectFilled)(
const Renderer *self,
const SDL_Rect *rect,
const SDL_Color *color);
242 void (*drawTexture)(
const Renderer *self, Texture *texture,
const SDL_Rect *dest,
const SDL_Color *color);
286 Texture *texture,
const SDL_Color *color);
294 void (*renderDeviceDidReset)(
Renderer *self);
302 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.