我是一名专业的开发人员,主要使用 Java,但在业余时间我喜欢玩不同的语言和库。问题是我想开始学习如何开发支持 3D 的应用程序或游戏。那里有很多引擎,但我担心直接使用这些引擎我将无法学习 3d 开发的基础知识,因为它们的水平很高。
我应该使用场景图引擎、SDL 之类的库开始编程,还是直接使用 opengl?
我在 linux 上进行所有开发,但我希望我开发的东西是跨平台的。
我是一名专业的开发人员,主要使用 Java,但在业余时间我喜欢玩不同的语言和库。问题是我想开始学习如何开发支持 3D 的应用程序或游戏。那里有很多引擎,但我担心直接使用这些引擎我将无法学习 3d 开发的基础知识,因为它们的水平很高。
我应该使用场景图引擎、SDL 之类的库开始编程,还是直接使用 opengl?
我在 linux 上进行所有开发,但我希望我开发的东西是跨平台的。
我会从普通的 OpenGL 开始。做一些基本的场景,然后从那里开始构建你自己的“3D引擎”。这可能会很糟糕,因为您将学习并且必须自己操作很多低级的东西。但是,我认为这就是你想学习的。
不要创建太复杂的东西,我只会做基础,在掌握了这些(我指的是矩阵操作、相机、平截头体、遮挡等)之后,看看一些 3D 引擎,看看它们是如何实现的。那时我会开始使用它们。
您需要一个简单的工具包来设置 OpenGL 画布。我推荐 GLUT,它既古老又非常简单。它将帮助您设置一个简单的屏幕。比这更低的级别将是不可移植的,并且创建起来会有点痛苦(Xorg 调用?叹息......)。许多工具包库都有 3D 画布(QT、SDL 等)。但 GLUT 的优点是它只创建您的窗口,设置一些功能,仅此而已。
Ogre是一个非常不错的 3D 引擎,在了解 OpenGL 的基础知识之后您可能会想看看它。它编程良好且易于使用。
我从 OpenGL 开始。网上有很多教程,除了教授 OpenGL本身之外,还可以让您学习很多 3d(游戏)开发中的重要内容,例如适当的场景照明和动画基础知识。
直接 OpenGL 访问方面的 3D 开发基础是一个快速变化的目标。准备好每隔几个月就必须了解新功能。经过多年的停滞,去年已经发布了三个 OpenGL 标准,每个标准都有重要的变化。这可能是令人愉快的,但需要付出很多努力才能遵循。
如果您只是想看看过去很长一段时间是如何工作的,请选择 OpenGL 2.0 规范。它会留在这里,至少再多几年。OpenGL 3.0 在单独的上下文中引入了所有更改,并且 NVIDIA 承诺不会放弃旧功能。你不会有竞争力,但你有一个稳定的空闲时间平台。
如果您将 OpenGL 视为达到目的的一种手段,您可能更喜欢为您完成所有繁琐工作的更高级别的库。3D 图形的“其他”基础,即向量、矩阵、四元数(等等)也出现在这一层。您只是不必知道如何将它们有效地传递给 GPU。如果您追求更高级别的 3D 图形,您可以专注于在所有 API(OpenGL、OpenGL ES、Direct3D)和技术(扫描线光栅化、光线跟踪)中保持相同的东西。
所以最后,由你决定你想用你的业余时间做什么。两条路都很有趣,如果没有固定的目标,就没有内在的“更好”的方式。
我可以建议你OpenSceneGraph和 c++
或者可能是 Delta3D。它是一个基于 OpenSceneGraph 的库
还有食人魔,但我没用过。。