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