缩小OpenGL与操作系统之间的差距

时间:2012-12-10 23:32:17

标签: c++ opengl cross-platform

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

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

2 个答案:

答案 0 :(得分:1)

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

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

我自己无法帮助您进行Linux编程,但快速谷歌搜索得到的结果如this

答案 1 :(得分:0)

  

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

没有。如果您对此没有经验,则不应该这样做。

  

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

当然。

  

这些会牺牲性能吗?

没有。 OpenGL实现与窗口和上下文的创建方式无关。它看起来与OpenGL实现完全相同。

  

使用OpenGL的X Window服务器?

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

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