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