代码之家  ›  专栏  ›  技术社区  ›  Soviut

OpenGL ES是否支持环境明暗器?

  •  2
  • Soviut  · 技术社区  · 15 年前

    我想做金属的三维物体,似乎是反射。我想使用一个使用球体或立方体贴图的环境明暗器来实现这一点,我可以将图像或纹理指定为“反射”源。

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

    3 回复  |  直到 14 年前
        1
  •  4
  •   Kai    15 年前

    OpenGL ES 2.0提供了明暗器支持。然而,目前市面上的许多移动设备都没有这种功能。对您来说,对图形的ES1.1和ES2.0版本进行编码是很重要的。

    Apple Dev Center有大量关于过渡的信息:

    OpenGL的固定功能管道 ES 1.1提供了良好的基线行为 对于三维图形管线,从 将顶点转换和照明到 将最终像素与 帧缓冲区。如果你选择 实现OpenGL ES 2.0 申请,你需要 复制此功能。上 另一方面,OpenGLES2.0更多 比OpenGL ES 1.1灵活。习俗 顶点和片段操作 很难或不可能 使用OpenGL ES 1.1实现可以 用OpenGL实现 ES 2着色器。实现自定义 OpenGL ES 1.1中的操作 应用程序通常需要多个 渲染过程和复杂更改 打开隐藏 准则的目的。作为你的算法 在复杂中成长,着色者传达 这些操作更加清晰 简洁,性能更好。

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

        2
  •  2
  •   Virne    15 年前

    在过去,“金属”的外观是通过所谓的“环境映射”或 "reflection mapping" .

    由于OpenGLES1.1没有可用的可编程着色程序,因此可以使用软件进行简单的反射映射。只需根据反射源/相机变换顶点法线,并从变换后的法向量中获取纹理UV坐标。iPhone有强大的马力可以轻松做到这一点,至少有相当不错的顶点计数。

        3
  •  0
  •   Nils    14 年前

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