• 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); 缓存区数据成像
    
    

     

     
     
    
    
     
     




  • 相关阅读:
    test
    结构体内存对齐
    单链表(指针的指针应用)
    C语言实现线程池
    线程私有数据和pthread_once
    fcntl函数
    同构树
    动态规划经典题
    DP--方格取数问题
    动态规划的基本模型
  • 原文地址:https://www.cnblogs.com/dzqdzq/p/16190054.html
Copyright © 2020-2023  润新知