Something went wrong. Try again.
Software renderer in C
Something went wrong. Try again.
1.4 kB · 55 lines
C
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include "../backend.h"#include "../ve_renderer.h"
#define WINDOW_HEIGHT 480#define WINDOW_WIDTH 640
int main(int argc, char **argv) { ve_context ctx;
if (!backend_init(&ctx, "Rgba Triangles", WINDOW_WIDTH, WINDOW_HEIGHT)) { return 1; }
Color black = RGB(0, 0, 0); Color red = COLOR(255, 0, 0, 90); Color green = COLOR(0, 255, 0, 90); Color blue = COLOR(0, 0, 255, 90);
V2 p0 = {380, 80}; V2 p1 = {120, 400}; V2 p2 = {520, 400};
V2 v0 = {380, 80}; V2 v1 = {120, 400}; V2 v2 = {520, 400};
V2 u0 = {380, 80}; V2 u1 = {120, 400}; V2 u2 = {520, 400};
V2 center = {WINDOW_WIDTH / 2.0f, WINDOW_HEIGHT / 2.0f};
while (backend_event_loop(&ctx)) {
p0 = v2_rotate(p0, center, 0.1f * ctx.dt); p1 = v2_rotate(p1, center, 0.1f * ctx.dt); p2 = v2_rotate(p2, center, 0.1f * ctx.dt);
v0 = v2_rotate(v0, center, -0.1f * ctx.dt); v1 = v2_rotate(v1, center, -0.1f * ctx.dt); v2 = v2_rotate(v2, center, -0.1f * ctx.dt);
u0 = v2_rotate(u0, center, 0.2f * ctx.dt); u1 = v2_rotate(u1, center, 0.2f * ctx.dt); u2 = v2_rotate(u2, center, 0.2f * ctx.dt);
ve_clear(&ctx.ve_fb, black); ve_render_fps(&ctx);
ve_draw_triangle(&ctx.ve_fb, p0, p1, p2, red); ve_draw_triangle(&ctx.ve_fb, v0, v1, v2, blue); ve_draw_triangle(&ctx.ve_fb, u0, u1, u2, green); }; return 0;}