OpenGL如何在所有架构和GPU上运行?

时间:2019-04-30 10:10:36

标签: opengl gpu

一段时间以来,我一直想用OpenGL和c ++制作游戏,我想对它的确切工作原理和含义进行一些解释。

可以在没有OpenGL的情况下制作计算机图形吗?我在网上看到的大多数教程都展示了如何将OpenGL用于最基本的图形绘制,是否可以直接与GPU交互?

OpenGL如何在不同的CPU和操作系统上工作?据我所知,如果要在ARM处理器上使用c ++之类的语言,则必须重新编译这些语言,对于GPU而言,通常不是这种情况吗?

如果您确实可以在没有OpenGL的情况下制作图形,那么还有人这样做吗? OpenGL一般可以节省多少工作量,而OpenGL可以为我们提供帮助的系统有多复杂?

还有像OpenGL这样常用的其他库吗?如果不是,新图书馆最终会取代它吗?或者它很适合这项工作,而且什么也没有去?

1 个答案:

答案 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 的后继产品。