【发布时间】:2012-06-01 16:45:08
【问题描述】:
我正在从以下网站学习适用于 Android 的 OpenGL ES: http://www.learnopengles.com/android-lesson-one-getting-started/
谁能给我解释一下着色器是什么。我在网上四处寻找,但解释非常混乱。与片段着色器相比,顶点着色器是什么?
谢谢!
【问题讨论】:
标签: android opengl-es opengl-es-2.0
我正在从以下网站学习适用于 Android 的 OpenGL ES: http://www.learnopengles.com/android-lesson-one-getting-started/
谁能给我解释一下着色器是什么。我在网上四处寻找,但解释非常混乱。与片段着色器相比,顶点着色器是什么?
谢谢!
【问题讨论】:
标签: android opengl-es opengl-es-2.0
来自Wikipedia:
像素着色器,也称为片段着色器,计算每个像素的颜色和其他属性。
像素着色器的范围从始终输出相同的颜色到应用照明值,再到进行凹凸贴图、阴影、镜面高光、半透明和其他现象。
它们可以改变像素的深度(用于 Z 缓冲),或者在多个渲染目标处于活动状态时输出一种以上的颜色。
单独的像素着色器不能产生非常复杂的效果,因为它只对单个像素进行操作,而不知道场景的几何形状。
鉴于:
顶点着色器对分配给图形处理器的每个顶点运行一次。目的是将每个顶点在虚拟空间中的 3D 位置转换为它出现在屏幕上的 2D 坐标(以及 Z 缓冲区的深度值)。
顶点着色器可以操纵位置、颜色和纹理坐标等属性,但不能创建新顶点。
顶点着色器的输出进入管道中的下一个阶段,如果存在则为几何着色器,否则为光栅器。
本质上,像素(片段)着色器对您所看到的(一个像素)进行操作。顶点着色器对代码中存在的顶点信息进行操作。顶点着色器在图形管线的早期使用。
【讨论】:
Shaders 是直接在 GPU 上计算和执行的小程序:
主要着色器是(按计算顺序通过GPU rendering pipeline):
【讨论】:
那里有一些非常好的书籍:iPhone 3d Programming 和 Professional WebGL Programming。我推荐它们,因为它们都包含有关整个 OpenGL ES 2 和 WebGL api 的有价值的信息。
【讨论】: