对于图像渲染管线来说,流行的图像引擎总是会经过:
顶点着色器->几何着色器->形状匹配->光栅化->片段着色器->测试混合
对于顶点着色器来说,常见的顶点属性主要包括:
其中大部分属性是用于光渲染的,需要计算顶点的弧面弧度。虽然对于我们的任务来说,我们的色彩范围很差,所以一般不考虑复杂的光渲染,所以其实我们可以将顶点着色器和片段着色器合并。即直接将多边形光栅化并根据着色器的输入选择填色方案。
(此外,对于顶点我们应该保留切线向量或者法向量的属性,以用于绘制圆弧,这个可以在后期实现。)
此外,所有的顶点坐标在定义的时候就被要求归一化到0~1,我们似乎不需要对每一个顶点数组都赋予长和宽的属性,我们只需要读取对象的的顶点坐标,以及读取当前缓冲区的大小(我需要写一个函数可以返回当前屏幕的长宽,用于匹配缓冲区的大小),然后将坐标等比例放缩到缓冲区上。即根据终端返回的输出策略(居中,拉伸等)将图像直接打印到缓冲区。
也就是说我们在定义顶点的时候就已经包含了它的相对位置,所有的顶点和顶点数组都不需要所谓的长,宽以及图形位置的属性。只有在面向用户的时候保留长、宽以及图形位置,用于用户直接定义矩形框或者等边三角形等基本形状。
综上所述,我们应该把着色器的方法写于离屏缓冲区(即画布)中,直接对缓冲区进行直接着色。既将步骤简化为:
光栅化->片段着色器
光栅化的作用主要是将坐标映射到缓冲区上,片段着色器绘制边框和填色,因此也不需要单独定义顶点着色器,算是对于简单图像引擎的结构优化。
以上是对于着色渲染的简化建议,如果有什么不妥的也可以提出其他建议和补充。
对于图像渲染管线来说,流行的图像引擎总是会经过:
顶点着色器->几何着色器->形状匹配->光栅化->片段着色器->测试混合
对于顶点着色器来说,常见的顶点属性主要包括:
其中大部分属性是用于光渲染的,需要计算顶点的弧面弧度。虽然对于我们的任务来说,我们的色彩范围很差,所以一般不考虑复杂的光渲染,所以其实我们可以将顶点着色器和片段着色器合并。即直接将多边形光栅化并根据着色器的输入选择填色方案。
(此外,对于顶点我们应该保留切线向量或者法向量的属性,以用于绘制圆弧,这个可以在后期实现。)
此外,所有的顶点坐标在定义的时候就被要求归一化到0~1,我们似乎不需要对每一个顶点数组都赋予长和宽的属性,我们只需要读取对象的的顶点坐标,以及读取当前缓冲区的大小(我需要写一个函数可以返回当前屏幕的长宽,用于匹配缓冲区的大小),然后将坐标等比例放缩到缓冲区上。即根据终端返回的输出策略(居中,拉伸等)将图像直接打印到缓冲区。
也就是说我们在定义顶点的时候就已经包含了它的相对位置,所有的顶点和顶点数组都不需要所谓的长,宽以及图形位置的属性。只有在面向用户的时候保留长、宽以及图形位置,用于用户直接定义矩形框或者等边三角形等基本形状。
综上所述,我们应该把着色器的方法写于离屏缓冲区(即画布)中,直接对缓冲区进行直接着色。既将步骤简化为:
光栅化->片段着色器
光栅化的作用主要是将坐标映射到缓冲区上,片段着色器绘制边框和填色,因此也不需要单独定义顶点着色器,算是对于简单图像引擎的结构优化。
以上是对于着色渲染的简化建议,如果有什么不妥的也可以提出其他建议和补充。