aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2021-10-29 13:58:14 +0200
committerdec05eba <dec05eba@protonmail.com>2021-10-29 13:58:14 +0200
commit5476dd7d21875d68a4d957f441d34eee2a9e2b37 (patch)
tree87036daac6884287108535fed77f2cd100928d18 /tests
parent14e3617736c63bd22b0785ad418acef825db221f (diff)
Fix multiple vertex buffers using the same data
Need to call glVertexPointer/glTexCoordPointer/glColorPointer every time we render.
Diffstat (limited to 'tests')
-rw-r--r--tests/main.c56
1 files changed, 45 insertions, 11 deletions
diff --git a/tests/main.c b/tests/main.c
index 53134b9..98c68ad 100644
--- a/tests/main.c
+++ b/tests/main.c
@@ -14,7 +14,8 @@
typedef struct {
mgl_texture *texture;
mgl_font *font;
- mgl_vertex_buffer *vertex_buffer;
+ mgl_vertex_buffer *vertex_buffer1;
+ mgl_vertex_buffer *vertex_buffer2;
mgl_shader_program *shader_program;
mgl_clock clock;
} Userdata;
@@ -47,8 +48,11 @@ static void draw(mgl_window *window, void *userdata) {
mgl_text_draw(context, &text);
mgl_text_deinit(&text);
- mgl_vertex_buffer_set_position(u->vertex_buffer, (mgl_vec2f){ window->cursor_position.x, window->cursor_position.y });
- mgl_vertex_buffer_draw(context, u->vertex_buffer, &u->font->texture);
+ mgl_vertex_buffer_set_position(u->vertex_buffer1, (mgl_vec2f){ window->cursor_position.x, window->cursor_position.y });
+ mgl_vertex_buffer_draw(context, u->vertex_buffer1, &u->font->texture);
+
+ mgl_vertex_buffer_set_position(u->vertex_buffer2, (mgl_vec2f){ window->cursor_position.x, window->cursor_position.y + 500 });
+ mgl_vertex_buffer_draw(context, u->vertex_buffer2, &u->font->texture);
}
int main(int argc, char **argv) {
@@ -57,13 +61,15 @@ int main(int argc, char **argv) {
mgl_texture texture;
mgl_font font;
- mgl_vertex_buffer vertex_buffer;
+ mgl_vertex_buffer vertex_buffer1;
+ mgl_vertex_buffer vertex_buffer2;
mgl_shader_program shader_program;
Userdata userdata;
userdata.texture = &texture;
userdata.font = &font;
- userdata.vertex_buffer = &vertex_buffer;
+ userdata.vertex_buffer1 = &vertex_buffer1;
+ userdata.vertex_buffer2 = &vertex_buffer2;
userdata.shader_program = &shader_program;
mgl_clock_init(&userdata.clock);
@@ -86,9 +92,10 @@ int main(int argc, char **argv) {
if(mgl_shader_program_finalize(&shader_program) != 0)
return 1;
- mgl_vertex_buffer_init(&vertex_buffer);
+ mgl_vertex_buffer_init(&vertex_buffer1);
+ mgl_vertex_buffer_init(&vertex_buffer2);
- mgl_vertex vertices[4] = {
+ mgl_vertex vertices1[4] = {
(mgl_vertex){
.position = {0.0f, 0.0f},
.texcoords = {0.0f, 0.0f},
@@ -100,18 +107,44 @@ int main(int argc, char **argv) {
.color = {0, 255, 0, 100},
},
(mgl_vertex){
- .position = {font.texture.width, font.texture.height},
+ .position = {font.texture.width, font.texture.height/2},
+ .texcoords = {1.0f, 0.5f},
+ .color = {0, 0, 255, 100},
+ },
+ (mgl_vertex){
+ .position = {0.0f, font.texture.height/2},
+ .texcoords = {0.0f, 0.5f},
+ .color = {255, 0, 255, 100}
+ }
+ };
+
+ mgl_vertex vertices2[4] = {
+ (mgl_vertex){
+ .position = {0.0f, 0.0f},
+ .texcoords = {0.0f, 0.5f},
+ .color = {255, 0, 0, 100}
+ },
+ (mgl_vertex){
+ .position = {font.texture.width, 0.0f},
+ .texcoords = {1.0f, 0.5f},
+ .color = {0, 255, 0, 100},
+ },
+ (mgl_vertex){
+ .position = {font.texture.width, font.texture.height/2},
.texcoords = {1.0f, 1.0f},
.color = {0, 0, 255, 100},
},
(mgl_vertex){
- .position = {0.0f, font.texture.height},
+ .position = {0.0f, font.texture.height/2},
.texcoords = {0.0f, 1.0f},
.color = {255, 0, 255, 100}
}
};
- if(mgl_vertex_buffer_update(&vertex_buffer, vertices, 4, MGL_PRIMITIVE_QUADS, MGL_USAGE_STATIC) != 0)
+ if(mgl_vertex_buffer_update(&vertex_buffer1, vertices1, 4, MGL_PRIMITIVE_QUADS, MGL_USAGE_STATIC) != 0)
+ return 1;
+
+ if(mgl_vertex_buffer_update(&vertex_buffer2, vertices2, 4, MGL_PRIMITIVE_QUADS, MGL_USAGE_STATIC) != 0)
return 1;
fprintf(stderr, "Font texture width: %d, texture height: %d\n", font.texture.width, font.texture.height);
@@ -127,7 +160,8 @@ int main(int argc, char **argv) {
mgl_window_display(&window);
}
- mgl_vertex_buffer_deinit(&vertex_buffer);
+ mgl_vertex_buffer_deinit(&vertex_buffer2);
+ mgl_vertex_buffer_deinit(&vertex_buffer1);
mgl_shader_program_deinit(&shader_program);
mgl_font_unload(&font);
mgl_texture_unload(&texture);