OpenGL 3.x和2.x有很大的不同吗?是浪费时间学习OpenGL 2.x还是他们都遵循相同的概念?我想我在某个地方读到2.x是基于状态的,而3.x不是,这是对的吗?跳过OpenGL 2.X并开始学习OpenGL 3.X会更好吗?
回答
了解任何有关它的最多学习材料。 NeHe's tutorials是一个很好的开始。
几个月前,我做了一些OpenGL工作,尽管我不记得我编程的版本,但我可以告诉你,这是最重要的概念。当你刚刚开始并且不处理着色器和其他事情时尤其如此。
(见马尔特Clasen的答案。)
他们几乎完全向后兼容,因此可以随心所欲地用旧版本的学习是要应用到以后的版本就好了。如果你必须在某个地方“瞄准”,2.0可能是一个不错的选择。如果你看看the OpenGL Wikipedia page,你可以看到各种版本添加了什么,并为你自己决定你认为你需要哪些功能。
男人,不停地给我投票。把它吸起来。我会支持这一建议,特别是在没有任何人提供GL 3特定资源的情况下。你可以学习使用2.x的着色器,并且如果将几何图形提供给GL的方法即使是任务难度的一小部分,我也希望自己处于你的鞋子中。 – 2010-07-12 16:32:45
要小心。 OpenGL 3弃用了许多功能,特别是OpenGL早期的功能。如果你从过时的教程开始(像NeHe的大部分教程),你很可能会习惯过时的OpenGL 2风格。
在OpenGL 3中没有固定的功能管道(如果你不使用向后兼容功能)。你必须使用着色器。没有glBegin/glEnd了。你必须使用顶点缓冲区。两者都已经在OpenGL 2中可用,但大多数教程都以glBegin/glEnd开始,并设置OpenGL颜色属性。这是一个非常重要的区别。
OpenGL 2提供了无数的方法来将东西放在屏幕上,每个至少有一个流行的教程。 OpenGL 3下降了很多,包括OpenGL 2的“初学者子集”(固定函数glBegin/glEnd)。所以如果你想长期瞄准OpenGL 3,从一开始就要去做。除了陷入死胡同外,没有什么比这更激烈的了。
OpenGL 3不会丢弃任何东西。弃用意味着将来它会被抛弃,而不是被抛弃。只要一个人使用完整的环境,你所担心的一切仍然存在。 我很怀疑驱动程序会在很长一段时间内放弃对固定功能管道的支持,考虑到现有软件使用它的程度。 – 2009-08-16 16:39:32
对于OpenGL 3,意味着整个3.x系列,而最近发布的3.2实际上会抛弃弃用的函数。请参阅“OpenGL 3.2中的新增功能”,http://www.opengl.org/documentation/current_version/:“OpenGL 3.2和随附的OpenGL着色语言1.50添加了许多新功能,同时通过移除旧功能简化了API和着色语言在OpenGL 3.0中不推荐使用固定功能的接口。“ – 2009-08-16 19:56:06
Thanx Malte 这就是我所担心的。即使有什么东西仍然存在,我想要学习最好的做事方式,而glBegin/End东西似乎不是那样。所以,你知道在哪里可以找到任何不以未被认可的东西开始的opengl 3.x教程吗? – 2009-08-17 16:41:23
我正在阅读“学习现代3D图形编程”,虽然我没有硬件来实际使用OpenGL 3,但它帮助我理解概念,使我能够沟通1.1风格,并且一旦我有硬件可以使用就移动到3。
我觉得现代的着色器只有风格是OpenGL的未来和实时3D图形。我建议立即从OpenGL 3开始。另一方面,旧式的OpenGL更容易学习,并且在不理解整个API的情况下做简单的事情会更容易。
但是,无论您是否跳过旧式固定功能或者如果您使用Direct3D或OpenGL,重要的是您还要了解图形管道的原理和内部工作原理,因为我经常(并非总是)看到有人对OpenGL有疑问,为什么他们的代码无法工作,他们似乎对计算机图形学以及各自的OpenGL函数的真正意义和作用并不了解。
编辑:另外,看看this question一些书的建议,根据你的决定。
我觉得这个教程非常易于使用,它适用于OpenGL 3 http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html。其他教程,你可以找到有用:
- 1. 如何使用C学习OpenGL 3.x?
- 2. 学习OpenGL ES 1.x
- 3. 学习OpenGL的Mac OS X上
- 4. 我想通过OpenGL编程指南第7版学习OpenGL 3,但OpenGL 4.0与3.x有什么不同?
- 5. OpenGL vs OpenGL ES和OpenGL 1.x vs OpenGL 2.0要学什么?
- 6. cocos2d-x 3.x openGL获取错误
- 7. 在.NET世界中开始学习C#或C++会更好吗?
- 8. 哪一个学习Python 3.x或Python 2.x?
- 9. OpenGL 4.1学习资源
- 10. 从Sencha Touch 2或Sencha Touch 1.x开始更好吗?
- 11. 学习Opengl与“Android的OpenGL ES 2”,但代码不起作用
- 12. 你会开始学习Smalltalk吗?
- 13. 学习OpenGL对我有用吗?
- 14. 为Android游戏开发学习OpenGL ES
- 15. 学习没有GLUT的OpenGL?
- 16. iPhone:从哪里开始学习基本2D绘图的OpenGL ES?
- 17. OpenGL/Java学习曲线
- 18. XNA,直接X,OpenGL
- 19. 在OpenGL 3.x的VBO索引
- 20. CG Shader语义与OpenGL 3.x?
- 21. OpenGL 3.x Macbook Air 2012年中期
- 22. 不那么好想过OpenGL学习材料
- 23. OpenGL ES 2.0 X轴被翻转了吗?
- 24. 如何用fltk 1.3创建opengl 3.x或4.x上下文?
- 25. OpenGL程序在GL 3.x中工作,但不是4.x
- 26. int x = 3. x会缓存吗?
- 27. 学习Wordpress对开始开发者有好处吗?
- 28. 学习OpenGL ES 2.0,来自2D
- 29. 开始使用opengl
- 30. OpenGL学习基于开放式gl 2.0的项目的建议
我认为这个建议危险:未与着色效果处理在学习过时的固定功能管道。你显然开始使用的子集在OpenGL 3中不再可用。 – 2009-08-16 12:39:26
我同意,自从Nehe教程以来,OpenGL发生了很大的变化。如果你真的想要利用硬件加速技术,很可能你会想要使用OpenGL而不想这么做,因为有更多简单的库可以学习,Nehe对你来说没有什么用处。 – Kilon 2012-02-07 10:14:35