【发布时间】:2010-06-19 04:55:58
【问题描述】:
我想制作看起来是反光的金属 3d 对象。我想使用环境着色器来实现这一点,该着色器使用球体或立方体贴图,我可以将图像或纹理指定为“反射”源。
iPhone 上的 OpenGL ES 在任何版本中都支持吗?
【问题讨论】:
我想制作看起来是反光的金属 3d 对象。我想使用环境着色器来实现这一点,该着色器使用球体或立方体贴图,我可以将图像或纹理指定为“反射”源。
iPhone 上的 OpenGL ES 在任何版本中都支持吗?
【问题讨论】:
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 状态 代码的意图。作为你的算法 复杂性增加,着色器传达 这些操作更加清晰和 简洁且性能更好。
【讨论】:
在过去,“金属”外观是使用称为“环境映射”或"reflection mapping" 的技术实现的。
由于没有可用于 OpenGL ES 1.1 的可编程着色器,因此可以使用软件完成简单的反射映射。只需根据反射源/相机变换顶点法线,并从变换后的法线向量中获取纹理 UV 坐标。 iPhone 有能力轻松做到这一点,至少在顶点数不错的情况下。
【讨论】:
OpenGL ES 支持 OpenGL 的大部分功能(以及一些针对移动设备的额外功能)。如果我没记错的话,iPhone 3Gs 支持片段着色器,而旧款 iPhone 3G 只支持固定管道。
【讨论】: