一、OpenGL 渲染架构图
说明:
- Application Code C/C++ OpenGL API: Client 代表客户端
- Server : 代表 OpenGL 底层
- Vertex Shader(顶点着色器)、Fragment Shader(片元着色器)可进行自定义编程
数据的传递
顶点着色器的参数传递的三种方式
- Attributes(属性):顶点数据,投影矩阵,模型矩阵,纹理坐标(图片映射坐标关系)->顶点着色器->桥接给片元着色器
- Uniforms:统一批次(变换矩阵,颜色值)
- Texture Data(纹理数据):为了桥接给片元着色器
片元着色器的参数传递的三种方式
- Attributes 无法直接传入片元着色器,得间接传入片元着色器
- Uniforms
- Texture Data(纹理数据)
二、投影
正投影
特点:显示2D图像,远近一样大
透视投影
特点:显示 3D 图像,远小近大
API 运用:
GLFrustum类通过setPerspective ⽅法为我们构建⼀个平截头体。
CLFrustum::SetPerspective(float fFov , float fAspect ,float fNear ,float fFar);
参数:
- fFov:垂直方向上的视场角度
- fAspect:窗口的宽度与高度的纵横比
- fNear:近裁剪面距离
- fFar :远裁剪面距离
纵横比 = 宽(w)/高(h)