一、基础图形渲染
- 顶点处理:处理顶点数据的变换和光栅化过程,支持顶点着色器、几何着色器、细分着色器等。包括图元渲染(通过不同绘制方式如点、线、三角形、矩形等渲染几何图形)、矩阵变换(支持平移、缩放、旋转等,适用于 2D 和 3D 物体转换,如 glTranslatef、glRotatef、glScalef 等)、着色器程序(通过顶点着色器、片段着色器、几何着色器、细分着色器等编写自定义渲染逻辑,如 glShaderSource、glCompileShader、glLinkProgram 等)、光栅化(从顶点数据生成像素,并确定每个像素的颜色和深度)。
- 正射投影:将物体投影到一个平面,适合做 2D 图形和某些 3D 场景的渲染,如 glOrtho。
- 透视投影:模拟人眼视角的透视效果,使物体在距离远近的基础上显示不同大小,如 glFrustum、gluPerspective 等。
- 视口:定义渲染区域的大小,通常与窗口的尺寸匹配,如 glViewport。
二、光照与材质
- 光源处理:支持多种光源类型,如点光源、平行光源、聚光灯等,如 glLight、glLightModeli 等。
- 材质处理:定义物体的表面特性,如反射、光泽、透明度等,如 glMaterialfv、glMaterialf 等。
- 光照模型:如环境光、漫反射光、镜面反射光等,如 glEnable (GL_LIGHTING)、glEnable (GL_LIGHT0) 等。
三、纹理映射
- 2D 纹理:将图像应用到 3D 对象的表面,提供表面细节,如 glTexImage2D、glTexParameteri 等。
- 3D 纹理:将 3D 图像数据应用到对象上,常用于体积渲染。
- 环境映射:创建反射或折射效果,例如立方体映射(Cube Mapping)。
- 多重纹理:同时应用多个纹理到一个物体表面。
四、缓冲区与帧缓冲
- 顶点缓冲对象(VBO):用于存储顶点数据,以便 GPU 处理,如 glGenBuffers、glBindBuffer、glBufferData 等。
- 元素缓冲对象(EBO):用于存储顶点索引数据,减少内存占用并加速渲染,如 glGenBuffers、glBindBuffer、glBufferData 等。
- 帧缓冲对象(FBO):允许渲染到纹理或其他附加的目标,而不是默认的窗口缓冲,如 glGenFramebuffers、glBindFramebuffer、glFramebufferTexture 等。
- 深度缓冲区与模板缓冲区:用于深度测试、模板测试等操作,如 glEnable (GL_DEPTH_TEST)、glClear (GL_DEPTH_BUFFER_BIT) 等。
五、渲染管线与着色器
- 着色器类型:顶点着色器(用于变换顶点坐标并将它们传递到片段着色器)、片段着色器(计算每个片段的颜色,用于渲染物体表面的光照、纹理等)、几何着色器(在顶点和片段着色器之间,可以生成或修改几何图形)、计算着色器(用于非图形计算任务,利用 GPU 并行计算)、细分着色器(用于细分曲面或多边形,增加模型的细节)。
- 程序对象:将多个着色器组合成一个程序并链接,如 glCreateShaderProgramv。
六、多重渲染与抗锯齿
- MSAA(多重采样抗锯齿):用于减少渲染中图形的锯齿效应,如 glEnable (GL_MULTISAMPLE)。
- 纹理采样:使用不同的纹理采样模式,如线性插值、最近邻采样等,如 glTexParameteri。
七、立体渲染与帧速率
- 立体渲染:生成双眼图像,实现 3D 立体显示。
- V-Sync(垂直同步):控制渲染帧率,避免图像撕裂现象,如 glfwSwapInterval (1)。
八、计算与图像处理
- 计算着色器:允许开发者在 GPU 上执行计算任务,如物理模拟、图像处理等。
- 图像处理:通过帧缓冲和着色器进行后期处理,创建诸如模糊、边缘检测、色调映射等效果,如 HDR、Bloom、Post-Processing 等。
九、调试与性能
- 调试功能:OpenGL 提供了一些调试扩展和工具(如 OpenGL Debug Output)。
- 性能优化:通过查询性能计数器、缓存优化、减少状态切换等优化渲染效率。
十、高级功能
- 实例化渲染:通过一个单独的命令绘制多个对象,减少绘制调用,如 glDrawArraysInstanced。
- 计算着色器与 GPU 计算:在图形以外的领域(如科学计算、机器学习等)利用 GPU 并行计算。
- 虚拟纹理与流式纹理:允许处理和渲染大规模的纹理,如在游戏中使用高分辨率纹理的同时保持内存效率。
- 顶点流式处理:逐步传递数据,适用于动态或变化的场景。
十一、跨平台与扩展
- OpenGL 扩展:OpenGL 允许硬件厂商提供扩展,增强其功能,例如 NVIDIA 的 GL_NV、ATI 的 GL_ATI 等。
- 跨平台支持:OpenGL 支持各种操作系统(Windows、Linux、macOS),并可以与其他图形 API(如 Vulkan、DirectX)一起使用。
十二、多线程与并行计算
- 多线程渲染:OpenGL 本身是单线程的,但可以通过多线程管理不同的渲染任务。通过合理分配任务和使用多个上下文,可以在多核处理器上提高渲染性能。
- 并行计算:允许开发者利用 GPU 进行并行计算,进行大规模的物理模拟、AI 计算等。计算着色器不一定需要与图形渲染挂钩,如 glDispatchCompute。
十三、深度与模板测试
- 深度测试:OpenGL 使用深度缓冲区来实现正确的遮挡关系,确保远处的物体不会遮挡近处的物体,如 glEnable (GL_DE

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



