我一直想学习3D图形语言已经有一段时间了,我终于决定学习OpenGL了。 但是,我在Mac上工作,官方这个最高版本的OpenGL for mac是2.1,但它可以通过我已经完成的测试非正式地支持3.3。
我想开发可以在多个平台上运行的应用程序,但哪个版本最适合学习?
答案 0 :(得分:11)
可移植性与仍在学习“现代OpenGL方式”之间的良好折衷,大致是“OpenGL 2.1的OpenGL ES 2.0子集”。这为您提供了便携性
OSX,如你所说
Windows,显然是
使用开源驱动程序的Linux(对于更高的OpenGL版本和更好的性能,您需要您可能更喜欢的专有驱动器,但有些人喜欢避免使用这些驱动器)
iOS和Android等智能手机平台。
OpenGL 1.x更具可移植性(例如旧的iOS和Android版本仅支持OpenGL ES 1.x),但经典的固定功能编程模型与基于缓冲对象和着色器的现代版本有所不同,并且使用立即模式很容易在渲染大量顶点时导致性能问题。所以可能不值得,恕我直言。
答案 1 :(得分:0)
我的建议是学习 而不是版本3.2。如果支持3.3(甚至是非正式的),那就去吧。
OpenGL 3.3已经相当“上一代”而非“前沿”。您必须努力搜索不支持OpenGL 3.3的卡,并且您可以获得价值30美元的4.x卡。
在版本2.x下,您必须经历很多痛苦才能确保即使是您每天使用的最基本功能也可用,并且您最终会编写两到三个代码路径,具体取决于您必须使用的扩展名以及有什么限制。
在3.3版本下,您希望每天使用的大多数功能都是核心(保证标准),并且大多数限制具有保证的最小值,无论如何都足以满足大多数情况。 3.3中不是核心的功能很少(如果没有它们,你就不会死掉),如果它们在那里你可以选择插入它们,如果它们不存在则忘记它们。吨。
2.1和3.3之间的范例发生了巨大的变化(如果你先从2.x开始,你将不得不重新学习!)和3.1和3.2之间的GLSL有明显的变化,这使得写入着色器代码既适用于考验,也适用于不可能 从版本3.2开始,一切都很顺利。新功能可用或它们不是......使用它们或不使用......但您原则上可以编写一段代码以在所有版本上运行。
答案 2 :(得分:-1)
如果您的目标是最大的互操作性,我宁愿看看WebGL,也可能是近亲,OpenGL ES。 OpenGL ES的概念(至少在2.0版本中)与OpenGL 4(基于缓冲区的数据传输,通用着色器等)的概念非常接近。
我认为通过学习2.1,你会学到一些过时的概念,你很快就要重新学习,比如直接模式,或者更确切地说是在以后的版本中修剪的整个fixed-function pipeline。
您也可以安全地开始学习3.x,因为您将学习当前的概念和功能。不要担心“官方支持”版本。