【问题标题】:OpenGL ES 2.0 and ShadersOpenGL ES 2.0 和着色器
【发布时间】:2013-04-19 23:27:08
【问题描述】:

两个问题:

  1. 有没有办法在 OpenGL ES 2.0 中不使用着色器来渲染到屏幕?

  2. 是否可以使用默认的顶点和片段着色器来代替我自己定义的着色器?

除了围绕 OpenGL ES 2.0 进行思考之外,没有尝试实现任何目标。

【问题讨论】:

    标签: android opengl-es-2.0


    【解决方案1】:
    1. 不,不在 ES 2.0 中。

    2. 不是内置的,但您可以在网上找到一些。尽管什么是合理的默认着色器很大程度上取决于您实际想要做什么。您只想渲染彩色图元吗?在 2D 或 3D 中?你需要照明吗?哪些参数定义了您的灯光?你想要纹理吗?这些相当基本的问题已经定义了着色器的外观。

    一方面,问题是您需要不同的着色器,具体取决于您想要实现的每种情况和渲染风格。但另一方面,如果适应特定的用例,这些着色器不会那么复杂。一个简单的 3D 光照顶点着色器不需要超过 5 行代码(仅实际的着色器功能),并且相应的片段着色器对 1 行代码进行纹理处理。

    但您不会绕开了解着色器的工作原理以及如何与它们交互。一旦你得到了这个,为通常的用例编写你自己的着色器就变得轻而易举了。我建议您查看一些关于 OpenGL ES 2.0 的优秀教程或书籍。这应该适当地介绍着色器的基本原理以及如何实现通常的标准计算,例如顶点变换、光照、纹理。

    【讨论】:

    • 非常感谢您的回答!问题背后的动机是希望从一个简单的单点渲染器开始构建并实现投影矩阵等。我得到的结论是,至少对于 ES 2.0 着色器是强制性的,非可绕过的组件。再次感谢!
    【解决方案2】:

    不幸的是,OpenGL ES 2.0 没有定义任何默认着色器。

    OpenGL ES 1.0 只是一个固定管线,不允许着色器定义,而 OpenGL ES 2.0 允许着色器定义,但不包括任何固定管线(即默认着色器)

    【讨论】:

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