@@ -60,6 +60,24 @@ static int compile_shader_source(StringView, GLenum type);
60
60
static int link_program (GLuint program);
61
61
static void uniform_location (GLuint program, GLuint locations[UniformSlot__Count]);
62
62
63
+ static void transact (Render* render, usize verticies);
64
+ static void vertex (Render* render, Vec2f position, Vec4f color, Vec2f uv, u32 flags);
65
+ static void triangle (Render* render,
66
+ Vec2f p0, Vec4f c0, Vec2f uv0, u32 f0,
67
+ Vec2f p1, Vec4f c1, Vec2f uv1, u32 f1,
68
+ Vec2f p2, Vec4f c2, Vec2f uv2, u32 f2
69
+ );
70
+
71
+ // 0-1
72
+ // |/|
73
+ // 2-3
74
+ static void quad (Render* render,
75
+ Vec2f p0, Vec4f c0, Vec2f uv0, u32 f0,
76
+ Vec2f p1, Vec4f c1, Vec2f uv1, u32 f1,
77
+ Vec2f p2, Vec4f c2, Vec2f uv2, u32 f2,
78
+ Vec2f p3, Vec4f c3, Vec2f uv3, u32 f3
79
+ );
80
+
63
81
c_string render_strerror (int error)
64
82
{
65
83
if (error == 0 ) return " no error" ;
@@ -243,16 +261,16 @@ void render_clear(Render* render, Vec4f color)
243
261
glClear (GL_COLOR_BUFFER_BIT);
244
262
}
245
263
246
- void render_transact (Render* render, usize vertices)
264
+ static void transact (Render* render, usize vertices)
247
265
{
248
266
if (render->vertices .size () <= render->vertex_index + vertices) {
249
267
render_flush (render);
250
268
}
251
269
}
252
270
253
- static void render_vertex_with_flags (Render* render, Vec2f position, Vec4f color, Vec2f uv, u32 flags)
271
+ static void vertex (Render* render, Vec2f position, Vec4f color, Vec2f uv, u32 flags)
254
272
{
255
- render_transact (render, 1 );
273
+ transact (render, 1 );
256
274
render->vertices [render->vertex_index ++] = {
257
275
.position = position,
258
276
.color = color,
@@ -261,20 +279,48 @@ static void render_vertex_with_flags(Render* render, Vec2f position, Vec4f color
261
279
};
262
280
}
263
281
264
- void render_vertex (Render* render, Vec2f position, Vec4f color, Vec2f uv)
282
+ static void triangle (Render* render,
283
+ Vec2f p0, Vec4f c0, Vec2f uv0, u32 f0,
284
+ Vec2f p1, Vec4f c1, Vec2f uv1, u32 f1,
285
+ Vec2f p2, Vec4f c2, Vec2f uv2, u32 f2)
265
286
{
266
- render_vertex_with_flags (render, position, color, uv, Shader_Color);
287
+ transact (render, 3 );
288
+ vertex (render, p0, c0, uv0, f0);
289
+ vertex (render, p1, c1, uv1, f1);
290
+ vertex (render, p2, c2, uv2, f2);
291
+ }
292
+
293
+ // 0-1
294
+ // |/|
295
+ // 2-3
296
+ static void quad (Render* render,
297
+ Vec2f p0, Vec4f c0, Vec2f uv0, u32 f0,
298
+ Vec2f p1, Vec4f c1, Vec2f uv1, u32 f1,
299
+ Vec2f p2, Vec4f c2, Vec2f uv2, u32 f2,
300
+ Vec2f p3, Vec4f c3, Vec2f uv3, u32 f3)
301
+ {
302
+ triangle (render,
303
+ p0, c0, uv0, f0,
304
+ p1, c1, uv1, f1,
305
+ p2, c2, uv2, f2
306
+ );
307
+ triangle (render,
308
+ p1, c1, uv1, f1,
309
+ p2, c2, uv2, f2,
310
+ p3, c3, uv3, f3
311
+ );
267
312
}
268
313
269
314
void render_triangle (Render* render,
270
315
Vec2f p0, Vec4f c0, Vec2f uv0,
271
316
Vec2f p1, Vec4f c1, Vec2f uv1,
272
317
Vec2f p2, Vec4f c2, Vec2f uv2)
273
318
{
274
- render_transact (render, 3 );
275
- render_vertex (render, p0, c0, uv0);
276
- render_vertex (render, p1, c1, uv1);
277
- render_vertex (render, p2, c2, uv2);
319
+ triangle (render,
320
+ p0, c0, uv0, Shader_Color,
321
+ p1, c1, uv1, Shader_Color,
322
+ p2, c2, uv2, Shader_Color
323
+ );
278
324
}
279
325
280
326
// 0-1
@@ -300,15 +346,12 @@ void render_quad(Render* render,
300
346
301
347
void render_cursor (Render* render, Vec4f color)
302
348
{
303
- render_transact (render, 3 );
304
- render_vertex_with_flags (render, { 0.0 , 0.0 }, color, vec2fs (0 ), Shader_Cursor);
305
- render_vertex_with_flags (render, { 1.0 , 0.0 }, color, vec2fs (0 ), Shader_Cursor);
306
- render_vertex_with_flags (render, { 1.0 , 1.0 }, color, vec2fs (0 ), Shader_Cursor);
307
-
308
- render_transact (render, 3 );
309
- render_vertex_with_flags (render, { 0.0 , 0.0 }, color, vec2fs (0 ), Shader_Cursor);
310
- render_vertex_with_flags (render, { 0.0 , 1.0 }, color, vec2fs (0 ), Shader_Cursor);
311
- render_vertex_with_flags (render, { 1.0 , 1.0 }, color, vec2fs (0 ), Shader_Cursor);
349
+ quad (render,
350
+ vec2f (0 .0f , 0 .0f ), color, vec2fs (0 ), Shader_Cursor,
351
+ vec2f (1 .0f , 0 .0f ), color, vec2fs (0 ), Shader_Cursor,
352
+ vec2f (0 .0f , 1 .0f ), color, vec2fs (0 ), Shader_Cursor,
353
+ vec2f (1 .0f , 1 .0f ), color, vec2fs (0 ), Shader_Cursor
354
+ );
312
355
}
313
356
314
357
static const char *shader_type_as_cstr (GLuint shader)
0 commit comments