1

我有兴趣使用 C++ 进行一些独立游戏开发,并且我想使用 OpenGL 3+ 来实现。我现在面临的主要问题是决定如何弥合 OpenGL 和操作系统之间的差距,因为我打算跨 Windows、Linux 和 Mac 进行所有开发。我是否应该编写自己的顶层,使用平台特定的代码进行窗口管理、I/O 等?我应该使用 SDL 或 FreeGLUT 等跨平台库吗?这些会牺牲性能吗?

作为旁注,我没有做过太多的 Linux 编程。是否有关于如何将 X Window Server 与 OpenGL 一起使用的教程?

4

2 回答 2

1

我使用SFML (C++ SDL),但 FreeGLUT 和 Allegro 也都不错。它们提供基本的窗口创建、输入处理等(取决于您选择的内容)。我不认为它们中的任何一个天生就是跨平台的(它们对于 Windows、Mac、Linux 有不同的版本)。

在性能方面,单单 SFML 的窗口包(创建一个窗口并设置一个 openGL 上下文)不会减慢任何速度。不过,我在使用它的 Graphics 包时遇到了性能问题。

无法帮助您自己进行 linux 编程,但是快速的谷歌搜索让我得到了这样的结果

于 2012-12-10T23:49:24.873 回答
0

我是否应该编写自己的顶层,使用平台特定的代码进行窗口管理、I/O 等?

不,如果你没有这方面的经验,你不应该这样做。

我应该使用 SDL 或 FreeGLUT 等跨平台库吗?

确实。

这些会牺牲性能吗?

不。对于 OpenGL 实现来说,创建窗口和上下文的方式并不重要。它看起来与 OpenGL 实现完全一样。

带有 OpenGL 的 X 窗口服务器?

FTB/Fungus 几年前确实在 X11 示例上发布了一个最简单的 OpenGL。我前段时间扩展了它以支持透明窗口合成。当然这不是很便携(在没有 X11 的情况下使用它,你仍然可以将它移植到 Windows 并在运行在 Windows 上的 X11 服务器上使用它)。

https://github.com/datenwolf/codesamples/tree/master/samples/OpenGL/x11argb_opengl

于 2012-12-10T23:57:41.390 回答