OpenGL 如何能够在所有架构和 GPU 上工作?

rob*_*age 3 opengl gpu

我一直想用 OpenGL、C++ 制作游戏有一段时间了,我希望能得到一些关于它到底是如何工作的以及它是什么的解释。

没有OpenGL可以制作计算机图形吗?我在网上看到的大多数教程都展示了如何使用OpenGL进行最基本的图形绘制,可以直接与您的GPU连接吗?

OpenGL 如何在不同的 CPU 和操作系统上工作?据我所知,像 c++ 这样的语言如果想在 ARM 处理器等上使用就必须重新编译,对于 GPU 来说不是这样吗?

如果你确实可以在不使用 OpenGL 的情况下制作图形,那么还有人这样做吗?OpenGL 一般可以节省多少工作和精力?OpenGL 为我们提供的系统有多复杂?

还有其他常用的库(例如 OpenGL)吗?如果没有,新的图书馆最终会取代它,还是它非常适合这项工作而不去任何地方?

小智 6

它到底是如何工作的以及它是什么?

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
Run Code Online (Sandbox Code Playgroud)

如果你确实可以在没有 OpenGL 的情况下制作图形,那么还有人这样做吗?

好,当然。有些人可能想从头开始实现自己的渲染引擎(尽管这确实是很困难的事情)。

还有其他常用的库(例如 OpenGL)吗?如果没有,新的图书馆最终会取代它,还是它非常适合这项工作而不去任何地方?

当然。DirectX由 Microsoft维护,仅针对 Windows 平台,而Vulkan则可被视为OpenGL的后继者。