我一直想在OpenGL,c ++中制作游戏一段时间,我希望能够解释它是如何工作的以及它是什么。
没有OpenGL可以制作计算机图形吗?我在网上看到的大部分教程都展示了如何使用OpenGL进行最基本的图形绘制,是否可以直接与GPU连接?
OpenGL如何在不同的CPU和操作系统上运行?据我所知,如果想要在ARM处理器上使用c ++这样的语言,必须重新编译,这一般不是GPU的情况吗?
如果你确实可以在没有OpenGL的情况下制作图形,那么还有人这样做吗? OpenGL一般可以节省多少工作和精力,OpenGL为我们提供的系统有多复杂?
是否有其他常用的OpenGL库?如果没有,新的图书馆最终会来到它的位置,还是完美的工作而不是去任何地方?
它究竟是如何工作的以及它是什么?
OpenGL定义了一个程序员可以用来开发图形程序(API)的接口。该接口以包含在项目中的头文件的形式提供给您。它意味着是多平台的,因此您可以编译在不同操作系统上使用OpenGL的代码。管理OpenGL规范的人员不提供指定功能的实现。这是由OS和硬件供应商完成的。
没有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库?如果没有,新的图书馆最终会来到它的位置,还是完美的工作而不是去任何地方?
当然。 DirectX由Microsoft维护,仅针对Windows平台和可被视为OpenGL后继的Vulkan。