知识点
随笔是根据LearnOpenGL CN进行记录,本人用来巩固回顾的
基础概念:
- 顶点数组对象 VAO
- 顶点缓冲对象 VBO
- 元素缓冲对象 EBO
- GL_POINTS
- GL_TRIANGLES
- GL_LINE_STRIP
图形渲染管线:
- 3D坐标转换为2D坐标
- 2D坐标转变为实际的颜色像素
顶点数据(Vertex data)---->顶点着色器(Vertex shader)---->几何着色器(Geometry shader)---->图元装配(Shape assembly)---->光栅化(Rasterization)---->片元着色器(Fragment shader)---->测试于混合(Tests and blending)
2D坐标和像素的区分:
- 2D坐标 精确 表示一个点位置
- 2D像素是这个点的 近似值 ,受到屏幕/窗口分辨率的限制
1. 顶点着色器
- 把一个单独的顶点作为输入
- 把3D坐标转为另一种3D坐标
- 对顶点属性进行基本处理
可以选择性传递给几何着色器
2. 几何着色器
- 一组顶点作为 输入 形成图元
- 通过发出 新的顶点 形成新的图元生成其他形状
3. 图元装配
- 将 顶点着色器或几何着色器输出的所有顶点 作为输入
- 装配成图元形状
- 输出传入光栅化阶段
4. 光栅化
- 将图元映射为最终屏幕上相应像素,生成供片元着色器使用的片元
OpenGL中的一个片段是OpenGL渲染一个像素所需的所有数据
5. 片元着色器
- 运行前执行裁切
- 裁切会丢弃超出视图之外所有像素 (提升执行效率)
- 计算一个像素的最终颜色
6. 测试和混合
- 所有对应颜色确定后被传入
- 判断这个像素是物体前面还是后面,决定是否丢弃
- 检查物体的透明度,并对物体进行混合
标签:----,OpenGL,像素,学习,2D,顶点,着色器 From: https://www.cnblogs.com/cherishviki/p/18464366在现代OpenGL中,我们必须定义至少一个顶点着色器和一个片元着色器(因为GPU中没有默认的顶点/片段着色器)