【问题标题】:Explanation of Shaders in OpenGL ES 2OpenGL ES 2 中的着色器解释
【发布时间】: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


【解决方案1】:

来自Wikipedia

像素着色器,也称为片段着色器,计算每个像素的颜色和其他属性。

像素着色器的范围从始终输出相同的颜色到应用照明值,再到进行凹凸贴图、阴影、镜面高光、半透明和其他现象。

它们可以改变像素的深度(用于 Z 缓冲),或者在多个渲染目标处于活动状态时输出一种以上的颜色。

单独的像素着色器不能产生非常复杂的效果,因为它只对单个像素进行操作,而不知道场景的几何形状。

鉴于:

顶点着色器对分配给图形处理器的每个顶点运行一次。目的是将每个顶点在虚拟空间中的 3D 位置转换为它出现在屏幕上的 2D 坐标(以及 Z 缓冲区的深度值)。

顶点着色器可以操纵位置、颜色和纹理坐标等属性,但不能创建新顶点。

顶点着色器的输出进入管道中的下一个阶段,如果存在则为几何着色器,否则为光栅器。

本质上,像素(片段)着色器对您所看到的(一个像素)进行操作。顶点着色器对代码中存在的顶点信息进行操作。顶点着色器在图形管线的早期使用。

【讨论】:

  • 顶点着色器在片段着色器之前执行,而不是稍后。
  • 抱歉,我想这不是很认真!将更新我的答案。
  • 所以着色器只是操纵你在屏幕上绘制的东西?
  • 着色器是用来操纵你将要在屏幕上绘制的几何图形的东西。
  • 太棒了!很高兴我能帮上忙。
【解决方案2】:

Shaders 是直接在 GPU 上计算和执行的小程序:

主要着色器是(按计算顺序通过GPU rendering pipeline):

  • 顶点着色器(在顶点上计算渲染)
  • 几何着色器(点、三角形等几何图形的计算渲染)
  • 像素/片段着色器(计算每个像素的渲染)

【讨论】:

  • 顺序不对,在得到一个图元之前,当然需要一个顶点。
  • 你是对的,我的错。我编辑并添加了指向 GPU 渲染管道的链接。更好:)
  • 所以着色器只是操纵你在屏幕上绘制的东西?
【解决方案3】:

那里有一些非常好的书籍:iPhone 3d Programming 和 Professional WebGL Programming。我推荐它们,因为它们都包含有关整个 OpenGL ES 2 和 WebGL api 的有价值的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多