commit fbbc45680630f114646d5238823287df17ccf319
parent 31329a6bb7eba8b70dc5cf06302628b5496a6aa9
Author: bsandro <email@bsandro.tech>
Date: Fri, 21 Nov 2025 00:16:13 +0200
pile of cubes
Diffstat:
| M | cube.c | | | 30 | ++++++++++++++++++++++++++---- |
1 file changed, 26 insertions(+), 4 deletions(-)
diff --git a/cube.c b/cube.c
@@ -217,6 +217,19 @@ int main(int argc, char *argv[]) {
-0.5f, 0.5f, -0.5f, 0.0f+c, 1.0f-c
};
+ vec3 cubePositions[] = {
+ { 0.0f, 0.0f, 0.0f },
+ { 2.0f, 5.0f, -15.0f },
+ {-1.5f, -2.2f, -2.5f },
+ {-3.8f, -2.0f, -12.3f },
+ { 2.4f, -0.4f, -3.5f },
+ {-1.7f, 3.0f, -7.5f },
+ { 1.3f, -2.0f, -2.5f },
+ { 1.5f, 2.0f, -2.5f },
+ { 1.5f, 0.2f, -1.5f },
+ {-1.3f, 1.0f, -1.5f }
+ };
+
glEnable(GL_DEPTH_TEST);
GLuint vbo;
@@ -283,9 +296,9 @@ int main(int argc, char *argv[]) {
glUniform1d(iTime, current_ts()-t_started);
//printf("%f\n", fabsf(sinf(current_ts()-t_started)));
- glm_rotate(model, glm_rad(1.f), (vec3){0.5f, 1.f, 0.f});
- GLuint loc_model = glGetUniformLocation(shaderPrg, "model");
- glUniformMatrix4fv(loc_model, 1, GL_FALSE, model[0]);
+ //glm_rotate(model, glm_rad(1.f), (vec3){0.5f, 1.f, 0.f});
+ //GLuint loc_model = glGetUniformLocation(shaderPrg, "model");
+ //glUniformMatrix4fv(loc_model, 1, GL_FALSE, model[0]);
GLuint loc_view = glGetUniformLocation(shaderPrg, "view");
glUniformMatrix4fv(loc_view, 1, GL_FALSE, view[0]);
GLuint loc_projection = glGetUniformLocation(shaderPrg, "projection");
@@ -295,7 +308,16 @@ int main(int argc, char *argv[]) {
glUniform1i(tex, 0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex);
- glDrawArrays(GL_TRIANGLES, 0, sizeof(vertices)/sizeof(vertices[0]));
+ for (int i=0; i<sizeof(cubePositions)/sizeof(cubePositions[0]); ++i) {
+ mat4 model;
+ glm_mat4_identity(model);
+ glm_translate(model, cubePositions[i]);
+ GLfloat angle = 20.f * i;
+ glm_rotate(model, glm_rad(angle), (vec3){ 1.f, 0.3f, 0.5f });
+ GLuint loc_model = glGetUniformLocation(shaderPrg, "model");
+ glUniformMatrix4fv(loc_model, 1, GL_FALSE, model[0]);
+ glDrawArrays(GL_TRIANGLES, 0, sizeof(vertices)/sizeof(vertices[0]));
+ }
glXSwapBuffers(dpy, win);
usleep(1000*7); // 144hz