一段时间以来,我一直想用OpenGL和c ++制作游戏,我想对它的确切工作原理和含义进行一些解释。
可以在没有OpenGL的情况下制作计算机图形吗?我在网上看到的大多数教程都展示了如何将OpenGL用于最基本的图形绘制,是否可以直接与GPU交互?
OpenGL如何在不同的CPU和操作系统上工作?据我所知,如果要在ARM处理器上使用c ++之类的语言,则必须重新编译这些语言,对于GPU而言,通常不是这种情况吗?
如果您确实可以在没有OpenGL的情况下制作图形,那么还有人这样做吗? OpenGL一般可以节省多少工作量,而OpenGL可以为我们提供帮助的系统有多复杂?
还有像OpenGL这样常用的其他库吗?如果不是,新图书馆最终会取代它吗?或者它很适合这项工作,而且什么也没有去?
答案 0 :(得分:3)
它是如何工作的以及它是什么?
OpenGL定义了一个接口,您作为程序员可以使用该接口来开发图形程序(API)。该接口以包含在项目中的头文件的形式提供给您。它应为多平台,以便您可以在不同的操作系统上编译使用OpenGL的代码。管理OpenGL规范的人员不提供指定功能的实现。这是由操作系统和硬件供应商完成的。
可以在没有OpenGL的情况下制作计算机图形吗?
是的,当然。您可以例如在程序中手动计算整个图像,然后调用某些特定于操作系统的函数以将该图像显示在屏幕上(例如Windows中的BitBlt)。
OpenGL如何在不同的CPU和操作系统上工作?
每个操作系统都有其自己的OpenGL规范实现,通常将其称为硬件驱动程序。因此,假设您有一台装有Windows操作系统和Nvidia图形卡的计算机。如果您运行一些调用glDrawElements
的程序,它将看起来像这样:
your_program calls glDrawElements
which calls glDrawElements implementation written by people from Microsoft
which calls Nvidia drivers written by people from Nvidia
which operates the HW
如果您确实可以在没有OpenGL的情况下制作图形,那么还有人这样做吗?
是的,可以。有些人可能想从头开始实现他们自己的渲染引擎(尽管这确实是最难的事情)。
还有像OpenGL这样常用的其他库吗?如果不是,新图书馆最终会取代它吗?或者它很适合这项工作,而且什么也没有去?
好的。由Microsoft维护的 DirectX 仅针对Windows平台,而 Vulkan 可以视为 OpenGL 的后继产品。