从OpenGL和C ++开始,正确的路径?

我需要一些具体的和一些一般的建议。 我是一个非常熟练的Java程序员和一个非常有经验的Web程序员,但我想进入软件开发领域,并且一直在处理C ++。 对于我想要做的游戏,我有一个好主意,并且我意识到这将是一项巨大的任务 - 但我更多地考虑了一个学习C ++,包装的机会,无论我遇到什么开发过程...

但是我无法在概念上把我的脚踩在门上! 我可以很好地处理C ++方面,它只是设置图形,正确的方式,这让我感到困惑。 我已经通过一些C ++的OpenGL教程,讲述了不同的东西,其中没有一个我可以真正开始工作......

有人说使用GLUT和GLEW。 有人说GLUT已经死了,而FreeGLUT现在就是这样。 有些人完全忽略了这些,并使用了一堆像“glaux.h”这样我似乎无法找到的文件 - 以及其他专门讨论“glaux.h”的教程......我发现的大多数教程都附带了警告在他们的OpenGL版本的注释中,我应该使用更新的库 - 还有其他的第三方库如Ogre和Aurora。

我一直在浏览大量的书籍和教程,这些书籍和教程都使用OpenGL和C ++几乎完全不同的设置。 我意识到,可能本身并不是一种正确的方式,但我正在寻找最新,最受欢迎的方式,并将最大限度地发挥项目的实用性,就我的学习而言......任何非常感谢一般教程或建议的链接。

顺便说一句,我正在使用Visual Studio Express 2010(好主意?)。 我的游戏不会太强烈(等轴测2D),但需要TON逻辑和TON数据,这就是为什么我想通过使用C ++来加快速度的原因。 (从行业的角度来看,使用c ++进行登录和图形的更好方法的任何其他见解对我来说也是非常有价值的! 提前致谢!


假设你正在学习OpenGL作为学习体验,我会向你推荐这样的:

使用GLEW,没有参数。 只要做到这一点,每个人都只对代码进行编码。 默认情况下,OpenGL接受稍后会消失的旧命令(例如固定功能管道),并且您不希望浪费时间。 具体来说:了解VBO的纹理,最重要的是了解着色器。

忘记glaux和过剩。 Freeglut是一个很好的,非常标准的选择。 一个不太明显的选择是qt,但它是QGLWidget允许您轻松地进行调用,而不用担心上下文创建等等。 添加GUI选项非常简单,编程图形时总是非常棒。

要真正学习OpenGL,我会推荐http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html。 讷河有这个问题,其中一半以上的东西没有用处,而且周围有很多绒毛(窗口创建等)。

但是,我不会推荐OpenGL作为学习实时图形编程的一种方式。 您的选择不限于DirectX。 我使用Ogre3D学习了大量的图形编码。 您仍然拥有您需要了解的所有概念(使用顶点和索引缓冲区,纹理和着色器进行低级别处理),并实现大量内容,让您的生活更轻松。 您可能无法了解特定API的来龙去脉,但您将从概念上了解所需的全部知识。 当我成为一名图形编程人员时,我没有编写一行DirectX代码,但我很快就能熟练掌握我们的引擎。 在那之后,我学会了很容易的实际呼叫。 了解硬件和概念。 无论如何,实际的实施会随着时间而改变

哦,以防万一我没有足够重复。 学习阴影


最好的教程是(可以说,作为任何“最好的”)nehe opengl教程。 至少,本教程已经提出多年。

此外,由于您来自Java背景,您可能更喜欢从Tao等框架中为opengl进行C#绑定,但实际的设置可能比说下载样本并运行它们更困难。


很容易看出OpenGL和C ++的各种选择会让人有些困惑。 大多数情况下,Java在两种可能性之间给出了两个非常明确的选择(你是否想要一个场景图?)

C ++的情况肯定更复杂。

  • Glut:这基本上是一个面向OpenGL的应用程序框架。 它显然主要是为了让示例很短,但仍然有效。 最初的实现有一些相当着名的错误,并且在十多年前还没有更新。 我只会在最初的预期背景下使用它:短样本/示例/演示。
  • glaux:这里的故事有点类似于GLUT。 它有一些已知的内存泄漏,但现在已有十多年没有定义。 无论如何,它永远不会携带。 我会完全避免这个。
  • GLEW / GLEE:这些允许相对容易地使用OpenGL实现(例如,Microsoft)的OpenGL新版本中添加的功能,这些功能尚未更新为包含可直接访问它们的标题/库。 我更喜欢Glee,因为它会自动初始化,但两者都能正常工作。
  • FreeGLUT:这已经在最近更新了,并且一些错误被清除了。 尽管如此,改进GLUT的基本设计仍然没有做太多的工作。 对于短演示/样本可能是更好的选择,但仍然不适用于(IMO)适合于非常严重的使用。
  • Ogre3D:这比任何前面的库大得多。 它是一个完整的场景图形库,包含纹理加载,定义的文件格式等等。一个坚实的库,但要注意,如果使用它,通常不会直接使用OpenGL(例如,在Windows上,它可以通过OpenGL或Direct3D渲染,根本不需要改变源代码)。
  • OpengSceneGraph:更经常用于科学导向的应用程序,但最接近Ogre3D。
  • FLTK:一个在OpenGL之上运行的小型轻量级GUI库。
  • GLFW:与GLUT一样,但它已经更新得更近了,没有接近同样多的错误,并且(IMO)是一个更好的设计 - 最小化但仍然适合“真正”使用。
  • 链接地址: http://www.djcxy.com/p/38433.html

    上一篇: Starting with OpenGL and C++, proper path?

    下一篇: Cleaning up when exiting an OpenGL app