gpt4 book ai didi

c++ - opengl是跨平台的吗?如果没有,如何移植游戏?

转载 作者:IT老高 更新时间:2023-10-28 23:13:16 32 4
gpt4 key购买 nike

好的,假设我正在使用 opengl 用 c++ 编写游戏。游戏在屏幕上绘制了一些简单的形状,例如正方形。现在说我想在 Windows 上运行“游戏”。我将如何移植它?实际的 c++ 不会是问题,因为它可以重新编译以适应我所理解的环境。但是对 openGL 库的调用会被破坏,不是吗?将包含用于开发的实际 opengl 库将为操作系统编译,这将需要重新下载该库,这将导致对源代码的修改。哪个会破坏原始环境中的程序,对吧?

tl;dr 有没有什么方法可以为多个操作系统构建一个 opengl 游戏,而无需将源代码修改为特定于平台或下载外部包装器或库?

最佳答案

OpenGL 是独立于平台的,而不是跨平台的。它只是一个图形库接口(interface)的规范。它与正在实现的平台无关。它只是描述了函数、它们的名称以及它们的作用。

OpenGL 库的特定实现可能是跨平台的,也可能不是。例如,Mesa尽管主要是为 Linux 开发的,但在某种程度上是跨平台的。您需要在每个要编译的平台上找到 OpenGL 的实现。

但是,在您可以开始使用 OpenGL 接口(interface)之前,需要执行一些代码。此代码用于设置 OpenGL 渲染上下文。你如何做到这一点平台特定的。例如,在 Linux 上,GLX 是 X Window 系统的扩展,它提供了一个用于创建渲染上下文的接口(interface)。这仅适用于运行 X Window 系统的系统。在其他系统上,您将不得不做一些不同的事情来完成同样的工作。

有跨平台库可以为您创建渲染上下文。例如,看看 GLFW .它是称为 GLUT 的库的现代替代品,但不再维护 GLUT。您可以避免在源代码中包含特定于平台的代码,并将该工作交给库来管理。

请注意,OpenGL 仅提供图形库。而已。游戏使用的许多其他库和接口(interface)可能与平台无关,例如输入、声音等。如果您的游戏仅包含纯 C++ 并且唯一的库是 OpenGL,则源可能会非常顺利地移植到另一个平台,只要您的 C++ 代码不依赖任何未指定的行为。如果您使用 GLFW 之类的库,您甚至可能不必更改渲染上下文设置。

还值得一提的是 SFMLSDL .这些库是跨平台的,并为各种多媒体提供接口(interface)。他们将设置您的 OpenGL 渲染上下文、为您创建窗口、绘制到屏幕、处理 I/O 和声音等等。它们在某些方面可能会受到限制,但它们的强大之处在于它们可以让您在所有平台上迅速占据优势。

关于c++ - opengl是跨平台的吗?如果没有,如何移植游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14007802/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com