2009-07-16 143 views
2

我想制作看似反光的金属3d物体。我想使用环境着色器来实现这一点,该着色器使用可以将图像或纹理分配为“反射”源的球体或立方体贴图。OpenGL ES支持环境着色器吗?

iPhone上的OpenGL ES是否支持任何版本?

回答

4

OpenGL ES 2.0提供着色器支持。但是,它不适用于今天市场上的许多移动设备。编码ES 1.1和ES 2.0版本的图形对你来说很重要。

苹果开发中心拥有大量信息的过渡:

的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具有很强的操作能力,至少在体面顶点数上是这样。

+0

假设2.0有环境映射是否安全? – Soviut 2009-07-17 20:23:38

0

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