2

我是一名专业的开发人员,主要使用 Java,但在业余时间我喜欢玩不同的语言和库。问题是我想开始学习如何开发支持 3D 的应用程序或游戏。那里有很多引擎,但我担心直接使用这些引擎我将无法学习 3d 开发的基础知识,因为它们的水平很高。

我应该使用场景图引擎、SDL 之类的库开始编程,还是直接使用 opengl?

我在 linux 上进行所有开发,但我希望我开发的东西是跨平台的。

4

4 回答 4

3

我会从普通的 OpenGL 开始。做一些基本的场景,然后从那里开始构建你自己的“3D引擎”。这可能会很糟糕,因为您将学习并且必须自己操作很多低级的东西。但是,我认为这就是你想学习的。

不要创建太复杂的东西,我只会做基础,在掌握了这些(我指的是矩阵操作、相机、平截头体、遮挡等)之后,看看一些 3D 引擎,看看它们是如何实现的。那时我会开始使用它们。

您需要一个简单的工具包来设置 OpenGL 画布。我推荐 GLUT,它既古老又非常简单。它将帮助您设置一个简单的屏幕。比这更低的级别将是不可移植的,并且创建起来会有点痛苦(Xorg 调用?叹息......)。许多工具包库都有 3D 画布(QT、SDL 等)。但 GLUT 的优点是它只创建您的窗口,设置一些功能,仅此而已。

Ogre是一个非常不错的 3D 引擎,在了解 OpenGL 的基础知识之后您可能会想看看它。它编程良好且易于使用。

于 2009-08-15T13:31:49.513 回答
2

我从 OpenGL 开始。网上有很多教程,除了教授 OpenGL本身之外,还可以让您学习很多 3d(游戏)开发中的重要内容,例如适当的场景照明和动画基础知识。

于 2009-08-15T13:35:37.030 回答
2

直接 OpenGL 访问方面的 3D 开发基础是一个快速变化的目标。准备好每隔几个月就必须了解新功能。经过多年的停滞,去年已经发布了三个 OpenGL 标准,每个标准都有重要的变化。这可能是令人愉快的,但需要付出很多努力才能遵循。

如果您只是想看看过去很长一段时间是如何工作的,请选择 OpenGL 2.0 规范。它会留在这里,至少再多几年。OpenGL 3.0 在单独的上下文中引入了所有更改,并且 NVIDIA 承诺不会放弃旧功能。你不会有竞争力,但你有一个稳定的空闲时间平台。

如果您将 OpenGL 视为达到目的的一种手段,您可能更喜欢为您完成所有繁琐工作的更高级别的库。3D 图形的“其他”基础,即向量、矩阵、四元数(等等)也出现在这一层。您只是不必知道如何将它们有效地传递给 GPU。如果您追求更高级别的 3D 图形,您可以专注于在所有 API(OpenGL、OpenGL ES、Direct3D)和技术(扫描线光栅化、光线跟踪)中保持相同的东西。

所以最后,由你决定你想用你的业余时间做什么。两条路都很有趣,如果没有固定的目标,就没有内在的“更好”的方式。

于 2009-08-15T13:56:21.560 回答
2

我可以建议你OpenSceneGraph和 c++

或者可能是 Delta3D。它是一个基于 OpenSceneGraph 的库

还有食人魔,但我没用过。。

于 2009-08-15T13:58:02.337 回答