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); 缓存区数据成像
分类:
opengl
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2021-04-25 微信开发者工具分析