openGL 学习之路二 GLhello源码解析

 1         int width, height;
 2         glfwGetFramebufferSize(window, &width, &height);
 3         const float ratio = width / (float) height;
 4 
 5         glViewport(0, 0, width, height);
 6         glClear(GL_COLOR_BUFFER_BIT);
 7 
 8         mat4x4 m, p, mvp;
 9         mat4x4_identity(m);
10         mat4x4_rotate_Z(m, m, (float) glfwGetTime());
11         mat4x4_ortho(p, -ratio, ratio, -1.f, 1.f, 1.f, -1.f);
12         mat4x4_mul(mvp, p, m);
13 
14         glUseProgram(program);
15         glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) &mvp);
16         glBindVertexArray(vertex_array);
17         glDrawArrays(GL_TRIANGLES, 0, 3);
18 
19         glfwSwapBuffers(window);
20         glfwPollEvents();
glViewport:  设置gl视窗大小, 0,0在应用程序窗口左下角。  我个人理解就是设置GL画板的位置以及大小。
glClear(GL_COLOR_BUFFER_BIT); 清除颜色,结果就是全屏黑
mat4x4 m, p, mvp;创建了三个矩阵4*4
mat4x4_identity(m); 初始化m, 行等于列都是1,其余都是0
mat4x4_rotate_Z(m, m, (float) glfwGetTime());//glfwGetTime为帧时间t,m进行选择绕z轴选择t角度,得到一个新的m内容
mat4x4_ortho(p, -ratio, ratio, -1.f, 1.f, 1.f, -1.f);// 初始化p, 正交模式
mat4x4_mul(mvp, p, m); mvp = m * p; 这里其实是在进行适配,对原始矩阵m做一个x轴的缩放

glUseProgram(program); // 告诉GL使用自定义画图程序program
glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) &mvp); // 设置全局变量。 全局变量是一个矩阵类型
glBindVertexArray(vertex_array);// 给应用程序设置顶点数据
glDrawArrays(GL_TRIANGLES, 0, 3);// 画个三角形,0,3 表示使用vertex_array[0], vertex_array[1], vertex_array[2]三个顶点数据
glfwSwapBuffers(window); 缓存区数据成像

 

 
 

 
 




posted @ 2022-04-25 14:15  Please Call me 小强  阅读(152)  评论(0编辑  收藏  举报