我没有任何图形编程的实际经验。我在阅读有关图形编程的内容时产生了这个疑问。
据我所了解,因为Windows没有像DOS那样提供直接硬件访问,所以创建了DirectX。这意味着DirectX是实现直接(近似)硬件访问的唯一可靠方法。我错了吗?
如果我没错的话,那么OpenGL必须使用DirectX本身或在DirectX之上实现。
那么这是否意味着在Windows上,OpenGL实际上就是DirectX?
请注意,我的疑问仅限于标题所说的内容,我不想知道其中一个比另一个更好等等。
DirectX是一个使用图形卡硬件功能的层。自Windows Vista以来,缺省的OpenGL实现(由Microsoft提供)使用DirectX,因此OpenGL非常慢。
然而,图形卡制造商提供了带有OpenGL的驱动程序,直接使用图形卡而不经过DirectX;性能应该相同。如果您拥有一个集成的图形卡和一个较差的驱动程序,OpenGL可能会使用DirectX。
不,这两种语言都通过由显卡制造商编写的驱动程序直接与图形卡硬件进行通信,因此它们提供相同水平的硬件访问。
Windows直接支持DirectX,它是用于漂亮的显示效果所需的操作系统的一部分。他们对OpenGL的支持相对更加有限,他们只支持v1.1(我们现在使用的版本为4),因此要做任何有用的事情,您需要使用一些额外的库(例如glew)或者图形卡制造商的OpenGL SDK。
在功能方面,DirectX受到微软的严密控制-因此所有DirectX系统应该表现相同。 OpenGL允许图形卡制造商添加自己的扩展,因此他们可以通过向硬件添加特定功能来提高性能(至少在理论上)。 OpenGL也是跨平台的,因此您的Windows OpenGL代码将在任何地方(理论上)运行。