关于 OpenGL 编程中的部分过程的记录。

# 环境配置

# 绘制流程

图形学的一般渲染管线包括:

顶点数据处理 -> 顶点着色器 -> 细分着色器 -> 几何着色器 -> 剪切 -> 光栅化 -> 片元着色器

# OpenGL 概述

# OpenGL 中的数据类型

OpenGL 中可以不采用 C/C++ 原生的数据类型,如 int , float 等。取而代之的是 OpenGL 中自定义的数据类型。一般采用 GL* 表示,如 GLuint (unsigned int 形式), GLboolean (boolean 形式) 等。

# OpenGL 中的函数类型

OpenGL 中对对象的操作有四种基本的函数类型:

  • void glGen*() 形式的函数负责进行 OpenGL 对象名称的分配。类似于一个指针变量的分配。
  • void glBind*() 形式的函数负责进行对象绑定。
  • void glDelete*() 形式的函数负责对象的释放。
  • GLboolean glls*() 形式的函数负责检查某个名称是否被分配为对象。

# 向 GPU 中传递数据

该步骤是在 GPU 显存中进行顶点数据存储的过程。

# Reference

VBO, VAO, EBO 理解

# 键盘回调处理

glut 用来实现键盘操作的 API.

glut.h
extern void APIENTRY glutKeyboardFunc(void (*func)(unsigned char key, int x, int y)); // 获取键盘按下操作
extern void APIENTRY glutKeyboardUpFunc(void (*func)(unsigned char key, int x, int y)); // 获取按键抬起操作

关于键的描述,可以采用 ASCII 码表示的按键直接采用 ASCII 码表示其索引,其余定义了常量,例如:

常量含义
GLUT_KEY_F1F1
GLUT_KEY_UP上方向键 (似乎不管用?)

这是一个参考:GLUT 键盘控制(glutKeyboardFunc 和 glutSpecialFunc)

# References

  • CG 大作业 11.14
    • assimp 安装 Assimp + VSCODE + OpenGL + MinGW 环境配置全攻略
    • LearnOpenGL: Assimp
    • OpenGl 导入读取多个 3D 模型 并且添加鼠标控制移动旋转
    • 需要做的事情
      • 确定导入模型的方式 (Assimp), 查找相关资料后导入对应文件
        • 一步步学 OpenGL3.3+: 这是一个很棒的知乎专栏
          • Import Model: 对应的油管视频
        • 三维模型格式转换神器 - assimp
        • [OpenGL] 使用 Assimp 导入模型 (Qt)
        • 参考以上两者的 import 思路
        • 通过 assimp 库读取多种格式的模型:一个 op 写的,也不错
      • 想明白数据结构
        • Model Loading
        • VBO, VAO, EBO 理解
      • GLM 的使用
      • 键鼠事件处理
      • 变换矩阵再次熟悉
        • OpenGL 场景漫游
        • OpenGL 3.3 教程翻译,源代码还没仔细看