From de0e18afa4fded15170a871d13395587d8a8ff5a Mon Sep 17 00:00:00 2001 From: DaniTheSkunk <> Date: Thu, 5 Jan 2023 09:59:05 +0000 Subject: [PATCH] palette drawing :) --- gfx.png | Bin 20482 -> 20482 bytes src/gsa.c | 64 ++++++++++++++++++++---------------------------------- 2 files changed, 24 insertions(+), 40 deletions(-) diff --git a/gfx.png b/gfx.png index 8473f77de70016ad286e2f328dacdff5d4ba6a5b..fcdb27471d55a97b57eddd7cb28a37876e01d5d9 100644 GIT binary patch delta 32 ocmZo#z}U2aae^7s|Nk2u-!M%~;GC?>%*iro>LKCHR?H`S0NY&*w*UYD delta 33 pcmZo#z}U2aae^5$0|Udxz&lJ66C@_palette, sizeof(img->palette)); + sw_debug("%08X", img->palette[1]); glGenTextures(1, &tex); glBindTexture(GL_TEXTURE_2D, tex); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); @@ -139,45 +146,16 @@ static void rect(f32 x, f32 y, f32 w, f32 h, i16 tile) { add_render_vert(x + w, y, tx + ts, ty); add_render_vert(x, y + h, tx, ty + ts); add_render_vert(x + w, y + h, tx + ts, ty + ts); +} - /* - render_verts[next_render_vert].x = x; - render_verts[next_render_vert].y = y; - render_verts[next_render_vert].tx = tx; - render_verts[next_render_vert].ty = ty; - ++next_render_vert; - - render_verts[next_render_vert].x = x + w; - render_verts[next_render_vert].y = y; - render_verts[next_render_vert].tx = tx + ts; - render_verts[next_render_vert].ty = ty; - ++next_render_vert; - - render_verts[next_render_vert].x = x; - render_verts[next_render_vert].y = y + h; - render_verts[next_render_vert].tx = tx; - render_verts[next_render_vert].ty = ty + ts; - ++next_render_vert; - - render_verts[next_render_vert].x = x + w; - render_verts[next_render_vert].y = y; - render_verts[next_render_vert].tx = tx + ts; - render_verts[next_render_vert].ty = ty; - ++next_render_vert; - - render_verts[next_render_vert].x = x; - render_verts[next_render_vert].y = y + h; - render_verts[next_render_vert].tx = tx; - render_verts[next_render_vert].ty = ty + ts; - ++next_render_vert; - - render_verts[next_render_vert].x = x + w; - render_verts[next_render_vert].y = y + h; - render_verts[next_render_vert].tx = tx + ts; - render_verts[next_render_vert].ty = ty + ts; - ++next_render_vert; - - */ +static void update_palette_gl() { + int i; + for(i = 0; i < 256; ++i) { + palette_gl[i * 4 + 0] = sw_color32_get_rf(palette[i]); + palette_gl[i * 4 + 1] = sw_color32_get_gf(palette[i]); + palette_gl[i * 4 + 2] = sw_color32_get_bf(palette[i]); + palette_gl[i * 4 + 3] = sw_color32_get_af(palette[i]); + } } void _gsa_tick() { @@ -198,7 +176,13 @@ void _gsa_tick() { sw_color32_get_bf(palette[0]), sw_color32_get_af(palette[0]) ); + glBindVertexArray(vao); + /* TODO: only do when palette changed */ + update_palette_gl(); + glUniform4fv( + glGetUniformLocation(program._program, "palette"), 256, palette_gl + ); glBufferData( GL_ARRAY_BUFFER, sizeof(struct render_vert) * (next_render_vert),