45 lines
1.2 KiB
C
45 lines
1.2 KiB
C
#include "Rendering/RenderTarget.h"
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
render_target_t render_target_create(uint32_t width, uint32_t height)
|
|
{
|
|
render_target_t target;
|
|
target.width = width;
|
|
target.height = height;
|
|
|
|
size_t buffer_size = (size_t)width * height * sizeof(vec4s);
|
|
target.buffer = (vec4s*)malloc(buffer_size);
|
|
memset(target.buffer, 0, buffer_size);
|
|
return target;
|
|
}
|
|
|
|
vec4s render_target_get_pixel(render_target_t* render_target, uint32_t x, uint32_t y)
|
|
{
|
|
if (x < render_target->width && y < render_target->height)
|
|
{
|
|
size_t index = (size_t)y * render_target->width + x;
|
|
return render_target->buffer[index];
|
|
}
|
|
|
|
return (vec4s){0.0f, 0.0f, 0.0f, 0.0f}; // Return black if out of bounds
|
|
}
|
|
|
|
void render_target_set_pixel(render_target_t* render_target, uint32_t x, uint32_t y, vec4s color)
|
|
{
|
|
if (x < render_target->width && y < render_target->height)
|
|
{
|
|
size_t index = (size_t)y * render_target->width + x;
|
|
render_target->buffer[index] = color;
|
|
}
|
|
}
|
|
|
|
void render_target_free(render_target_t* target)
|
|
{
|
|
if (target->buffer != NULL)
|
|
{
|
|
free(target->buffer);
|
|
target->buffer = NULL;
|
|
}
|
|
}
|