adi*_*ile 103 opengl cg vertex-shader fragment-shader
我已经阅读了一些关于Cg的教程,但有一点我不太清楚.顶点和片段着色器之间究竟有什么区别?什么情况比另一种更适合?
The*_*can 183
片段着色器与像素着色器相同.
一个主要区别是顶点着色器可以操纵顶点的属性.这是你的多边形的角点.
另一方面,片段着色器负责顶点之间的像素看起来如何.它们按照特定规则在定义的顶点之间进行插值.
例如:如果您希望多边形完全为红色,则可以将所有顶点定义为红色.如果您想要特定效果(如顶点之间的渐变),则必须在片段着色器中执行此操作.
换一种方式:
顶点着色器是图形管道中早期步骤的一部分,我认为在模型坐标转换和多边形裁剪之间.那时,还没有真正完成任何事情.
但是,片段/像素着色器是光栅化步骤的一部分,其中计算图像并填充顶点之间的像素或"着色".
只需阅读这里的图形管道,一切都会显露出来:http: //en.wikipedia.org/wiki/Graphics_pipeline
小智 21
顶点变换是图形硬件管道中的第一个处理阶段.顶点变换对每个顶点执行一系列数学运算.这些操作包括将顶点位置变换为屏幕位置以供光栅化器使用,生成纹理的纹理坐标,以及点亮顶点以确定其颜色.
光栅化的结果是一组像素位置以及一组片段.基元的顶点数与光栅化时生成的片段数之间没有关系.例如,由三个顶点组成的三角形可能会占据整个屏幕,因此会产生数百万个碎片!
早些时候,如果您不确切知道片段是什么,我们会告诉您将片段视为像素.然而,此时,片段和像素之间的区别变得重要.术语像素是"图像元素"的缩写.像素表示特定位置处的帧缓冲器的内容,例如颜色,深度和与该位置相关联的任何其他值.片段是可能更新特定像素所需的状态.
使用术语"片段"是因为光栅化将每个几何图元(例如三角形)分解为图元覆盖的每个像素的像素大小的片段.片段具有关联的像素位置,深度值和一组插值参数,例如颜色,次级(镜面)颜色和一个或多个纹理坐标集.这些各种内插参数是从构成用于生成片段的特定几何图元的变换顶点导出的.您可以将片段视为"潜在像素".如果片段通过各种光栅化测试(在光栅操作阶段,稍后将对此进行描述),片段将更新帧缓冲区中的像素.
小智 5
顶点着色器和片段着色器都是3-D实现的功能,它们不使用固定管线渲染。在任何3D渲染中,顶点着色器都在片段/像素着色器之前应用。
顶点着色器在每个顶点上运行。如果您有固定的多边形网格,并且想在着色器中对其进行变形,则必须在顶点着色器中实现它。即,顶点外观的任何物理变化都可以在顶点着色器中完成。
片段着色器从顶点着色器获取输出,并关联颜色,像素的深度值等。这些操作之后,片段将发送到帧缓冲区以在屏幕上显示。
某些操作(例如照明计算)可以在顶点着色器和片段着色器中执行。但是片段着色器比顶点着色器提供更好的结果。
| 归档时间: |
|
| 查看次数: |
72788 次 |
| 最近记录: |