opengl_x11

Playing with OpenGL
git clone git://bsandro.tech/opengl_x11
Log | Files | Refs | README | LICENSE

commit fbbc45680630f114646d5238823287df17ccf319
parent 31329a6bb7eba8b70dc5cf06302628b5496a6aa9
Author: bsandro <email@bsandro.tech>
Date:   Fri, 21 Nov 2025 00:16:13 +0200

pile of cubes

Diffstat:
Mcube.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