【问题标题】:Does OpenGL ES support environment shaders?OpenGL ES 是否支持环境着色器?
【发布时间】:2010-06-19 04:55:58
【问题描述】:

我想制作看起来是反光的金属 3d 对象。我想使用环境着色器来实现这一点,该着色器使用球体或立方体贴图,我可以将图像或纹理指定为“反射”源。

iPhone 上的 OpenGL ES 在任何版本中都支持吗?

【问题讨论】:

    标签: iphone 3d opengl-es


    【解决方案1】:

    OpenGL ES 2.0 提供着色器支持。但是,它在当今市场上的许多移动设备中不可用。对 ES 1.1 和 ES 2.0 版本的图形进行编码对您来说很重要。

    Apple 开发中心有大量关于过渡的信息:

    OpenGL的固定功能管线 ES 1.1 提供了良好的基线行为 对于 3D 图形管道,从 变换和照明顶点到 将最终像素与 帧缓冲区。如果你选择 实现 OpenGL ES 2.0 应用程序,您将需要 复制此功能。在 另一方面,OpenGL ES 2.0 更 比 OpenGL ES 1.1 更灵活。风俗 顶点和片段操作 将很难或不可能 使用 OpenGL ES 1.1 实现可以 用 OpenGL 轻松实现 ES 2.0 着色器。实现自定义 OpenGL ES 1.1 中的操作 应用程序通常需要多个 渲染通道和复杂的更改 到模糊的 OpenGL ES 状态 代码的意图。作为你的算法 复杂性增加,着色器传达 这些操作更加清晰和 简洁且性能更好。

    http://developer.apple.com/iphone/library/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/DeterminingOpenGLESCapabilities/DeterminingOpenGLESCapabilities.html#//apple_ref/doc/uid/TP40008793-CH102-SW1

    【讨论】:

      【解决方案2】:

      在过去,“金属”外观是使用称为“环境映射”或"reflection mapping" 的技术实现的。

      由于没有可用于 OpenGL ES 1.1 的可编程着色器,因此可以使用软件完成简单的反射映射。只需根据反射源/相机变换顶点法线,并从变换后的法线向量中获取纹理 UV 坐标。 iPhone 有能力轻松做到这一点,至少在顶点数不错的情况下。

      【讨论】:

      • 假设 2.0 有环境映射是否安全?
      • 使用 GLSL ES 着色语言是的。环境映射顶点着色器可以很容易地编写。与软件解决方案相比,代码和麻烦更少。
      【解决方案3】:

      OpenGL ES 支持 OpenGL 的大部分功能(以及一些针对移动设备的额外功能)。如果我没记错的话,iPhone 3Gs 支持片段着色器,而旧款 iPhone 3G 只支持固定管道。

      【讨论】:

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