5

我决定学习一些 OpenGL ES 2.0,并尝试为它选择一个练习平台。什么是可能的目标平台,它可以是 Android、iPhone 或 WebGL。但我不想花费太多时间和精力来正确设置环境。

你会推荐 WebGL 来快速开始学习 OpenGL ES 2.0 还是其他什么?

编辑:我正在使用 Mac,目前我对 ES 1.x 并不感兴趣。

4

5 回答 5

6

如果您在iOS 开发人员中心注册为开发人员(免费),您可以下载 Xcode 和 iOS SDK(同样,当您获得 Xcode 3 时免费),其中包括一个支持 OpenGL ES 2.0 的模拟器。当然,这假设您有一台 Mac 可以运行所有这些。

拥有 SDK 后,您可以简单地启动 Xcode 并基于 OpenGL ES 应用程序模板创建一个新应用程序。此应用程序将是一个功能齐全的 OpenGL ES 1.1 和 2.0 iOS 应用程序,您可以在模拟器中构建和运行它。您可以忽略所有 iOS 特定的设置代码并专注于类中的-drawFrame方法xxxViewController.m,这是 OpenGL ES 2.0 绘图代码所在的位置。

这可以是一个非常快速的环境来设置使用 OpenGL ES 2.0 着色器。我还试用了trenki 建议的PowerVR SDK 包,并且使用它来设置一些东西需要更多的参与。如果您使用的是 Windows,那么它比我在此处描述的基于 Mac 的 iOS SDK 更可行。

另一种可以在 Mac 上进行原型设计的着色器开发工具是 Quartz Composer。它与 Xcode 一起提供,并为各种效果(包括 OpenGL 着色器)提供视觉原型设计环境。我在这里写的一篇文章中演示了一个做这种原型设计的例子。桌面 GLSL 和 OpenGL ES 中的实现略有不同,但两者之间有很多相同之处。

虽然针对 iOS,但我最近教授了一门关于 OpenGL ES 2.0 的课程,作为可以从 iTunes U免费下载的课程的一部分。它可能有助于加快着色器的速度。

于 2011-04-09T20:03:48.130 回答
3

我建议您下载并设置Khronos OpenGL ES 2.0 SDK 用于 POWERVR SGX PC 仿真包(不幸的是,您必须注册才能下载)。这使您可以在台式计算机上启动并运行所有内容,这将使您的调试工作变得更加轻松。然后,您可以使用 C/C++ 开发您的 OpenGL ES 2.0 应用程序。

如果我没记错的话,我的 Android 手机(Samsung Galaxy S)也使用了这个 OpenGL 实现。

除了使用 Khronos SDK,您还可以使用 Mesa3D 项目中的 OpenGL ES 2.0 库(Ubuntu 在存储库中有它们)。它们运行良好,但我不能推荐它们,因为我已经遇到了结果与 Khronos SDK 实现和我的 Android 设备不同的情况。

编辑:您还必须创建一个 Window 和一个 OpenGL 渲染上下文才能实际使用 OpenGL。为此,我可以推荐SDL (1.3),它也有 Android 的官方端口。我使用提到的 SDK 在 Android 和 Ubuntu 上对其进行了测试。它允许我对两者使用相同的代码。

于 2011-04-09T17:25:12.053 回答
1

如果它用于游戏开发,请尝试使用框架,这样您就不必自己做婴儿步骤:-)。

这里有一些可以帮助您入门(我更喜欢android 的 :-)):

Android
- Min3d
- Libgdx
- AndEngine

iPhone
- Cocos2d
-麻雀

WebGL
-教程
- glge

于 2011-04-09T17:12:14.397 回答
1

如果你想学习 OpenGL ES 并拥有一个 mac,我建议你看这本书:

http://iphone-3d-programming.labs.oreilly.com/(可以从网上看,也可以买,我觉得值得)

除了 OpenGL 本身,它还解释了一些数学原理,并展示了所有示例的 OpenGL ES 1.1 和 2.0 方式。

(取决于您想要做什么,有时 1.1 更容易并且套件更好。在 2.0 中,即使您只想绘制单个三角形,您也总是需要着色器。)

于 2011-04-09T21:06:23.033 回答
0

由于Raspberry Pi支持硬件加速的 OpenGL ES 2.0,而且价格相当便宜,它会成为一个很好的平台,用于测试,如果不是实际开发。它基本上是上一代智能手机,没有手机位。如果您在其上安装 Linux 发行版(例如 Debian),您就可以立即在其上进行编程。由于它是一个学习平台,因此非常适合此目的。您不会孤单,许多人都在尝试使用 Open GL ES。

于 2012-07-02T16:59:53.560 回答