繁体   English   中英

是opengl跨平台吗? 如果没有,游戏如何移植? [关闭]

[英]Is opengl cross platform? If not, how a game be ported? [closed]

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

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

OpenGL是独立于平台的,而不是跨平台的。 它只是图形库界面的规范。 它不关心它正在实施的平台。 它只描述了功能,它们被称为什么以及它们的作用。

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

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

有一些跨平台库可用于为您创建渲染上下文。 例如,看看GLFW 它是名为GLUT的库的现代替代品,但GLUT不再维护。 您可以避免在源中使用特定于平台的代码,并将该作业提供给库来管理。

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

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

是的,OpenGL是跨平台的。 用于创建OpenGL渲染上下文,处理输入,et.al。的代码,通常不是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM