2011-12-01 142 views
-1

我开始学习Android的OpenGL ES,并且遇到一些问题。Android中的着色器在OpenGL ES中

我在互联网上看到不同的教程,我很困惑。有些着色器和没有着色器的教程,但它们都是相同的主题。实际上着色器是什么,我们必须使用它吗?

哪个OpenGl版本适合创建像Racing Moto或任何3D游戏这样的游戏?

回答

1

实际上,着色器是由GPU构建并执行的程序。在游戏编程中,他们通常以缓冲数据的形式从CPU输入数据,这些数据表示游戏中的3D几何体。还有通用GPU(GPGPU)程序,它们不一定需要用于输入的3D数据,但它们处于不同的编程范围。

我对OpenGL ES并不是太熟悉,但对于移动平台和其他更具限制性的硬件,可以不使用着色器而只是使用固定功能流水线。着色器是你不需要马上进入的东西,如果你是编程图形的初学者,但是很快就可以选择它。 OpenGL ES是OpenGL的更加精简版本。

正如沃尔夫冈所述,OpenGL ES 2.0要求您使用着色器,因为固定功能流水线已经不再使用,而是留到较旧的较慢硬件。

也就是说,OpenGL和OpenGL ES的局限性最终来自您使用的硬件。有些手机比其他手机具有更高的像素填充率,某些硬件可以绘制多个帧缓冲区对象(更高级的功能),有些则不能。 OpenGL不会在内部为您提供这些功能 - 它只是在硬件具有该功能的情况下向程序员公开该功能。

2

造成混淆的原因可能是有两个版本的OpenGL ES可用于android,OpenGL ES 1.x和OpenGL ES 2.0。这些不相容。 在OpenGL ES 1.1中,没有着色器。 在OpenGL ES 2.0中,着色器是必需的。

我会推荐所有新开发的OpenGL ES 2.0;起初它的工作稍微有些难理解,但在我看来,这种努力是值得的。

+0

但并非所有设备都支持OpenGL ES 2.0。这意味着会有很多人无法在自己的设备上运行我的游戏。 – droidman