C++ 使用FreeGlut与SDL的组合

C++ 使用FreeGlut与SDL的组合,c++,c,opengl,libraries,game-engine,C++,C,Opengl,Libraries,Game Engine,我目前正在编写一个游戏引擎,它将经历一次重大的重写。首先,我正在考虑将哪个库与引擎结合使用。显然,我将在这里使用OpenGL,并将尽我所能使其向前和向后兼容 然而,主要的问题是,从我的大部分研究中,我发现像SDL这样的伟大库(除了1.3,我不相信它是稳定的?我可能错了)只支持OpenGL 3,而不支持4.2。然而,FreeGlut确实支持最新和最优秀的引擎,并且似乎是一个很好的引擎基础的方法 然而,唯一的事情是设置一些东西,比如键盘I/O和声音输入音频,以及其他东西。因此,我正在考虑是否可以使用

我目前正在编写一个游戏引擎,它将经历一次重大的重写。首先,我正在考虑将哪个库与引擎结合使用。显然,我将在这里使用OpenGL,并将尽我所能使其向前和向后兼容

然而,主要的问题是,从我的大部分研究中,我发现像SDL这样的伟大库(除了1.3,我不相信它是稳定的?我可能错了)只支持OpenGL 3,而不支持4.2。然而,FreeGlut确实支持最新和最优秀的引擎,并且似乎是一个很好的引擎基础的方法

然而,唯一的事情是设置一些东西,比如键盘I/O和声音输入音频,以及其他东西。因此,我正在考虑是否可以使用glut初始化opengl并使用opengl,然后让SDL进行窗口管理以及键盘I/O、声音等

当然,使用Qt和OpenGL总是有选择的,但是如果可能的话,我肯定希望能够控制我的主循环(使用Qt和OpenGL可以吗?)

我也听说过SFML,但最终我还是希望使用C语言编写的库,因为我计划编写一个C语言库来处理大部分的原始渲染(为了纯粹的速度和内存管理,从程序上讲)

因此,我不知道在这里该怎么办。Qt是一个很好的选择,还是有另一个类似C的替代品(比如FreeGlut),它允许主循环控制(比如SDL)并提供我正在寻找的必要的定制

然而,主要的问题是,从我的大部分研究中,我发现像SDL这样的伟大库(除了1.3,我不相信它是稳定的?我可能错了)只支持OpenGL 3,而不支持4.2。然而,FreeGlut确实支持最新和最优秀的引擎,并且似乎是一个很好的引擎基础的方法

你的研究缺乏

首先,FreeGLUT不应该用于任何你称之为“引擎”的东西。不管你的意思是什么,FreeGLUT不是这项工作的工具。它是为创建演示而设计的,这就是它拥有主循环的原因。我知道FreeGLUT确实有一种方法可以让你控制主循环,但是使用FreeGLUT的标准方法不能做到这一点

其次,SDL1.2不能创建OpenGL 3.2+,这是正确的。但是,您不必创建核心上下文来使用GL 3.2+;兼容性上下文在这些版本中工作得很好。唯一没有兼容上下文的平台是MacOSX的3.2支持。这样我就不用担心了

你可以试试。这有点像FreeGLUT,只是更以游戏为中心。它使您可以控制渲染循环等。它提供了比FreeGLUT更好的输入处理,以及一些轻图像加载功能(仅TGA文件)。它甚至有一个线程API(尽管我不建议使用这些函数。GLFW2.0将删除它们,因为C++11和C11都有本机线程API)

但是,它没有音频系统

我也听说过SFML,但最终我还是希望使用C语言编写的库,因为我计划编写一个C语言库来处理大部分的原始渲染(为了纯粹的速度和内存管理,从程序上讲)

<>我将忽略C++没有“纯速度和内存管理”的谬误,这是我忽略的常见谣言。重要的一点是:就渲染代码而言,SFML的存在只是为了创建和管理窗口。渲染代码甚至不需要与它对话。您调用一些SFML函数,创建一对SFML对象,而您的“C库”代码甚至不必知道那些C++对象在那里。 但是,如果你完全不能在C++中工作,你可以一直使用。它有一个C API,支持OpenGL核心上下文、输入、音频以及SFML的大部分功能。它还有相当不错的文档,并且是模块化的(尽管与SFML的方式不同)

然而,主要的问题是,从我的大部分研究中,我发现像SDL这样的伟大库(除了1.3,我不相信它是稳定的?我可能错了)只支持OpenGL 3,而不支持4.2。然而,FreeGlut确实支持最新和最优秀的引擎,并且似乎是一个很好的引擎基础的方法

你的研究缺乏

首先,FreeGLUT不应该用于任何你称之为“引擎”的东西。不管你的意思是什么,FreeGLUT不是这项工作的工具。它是为创建演示而设计的,这就是它拥有主循环的原因。我知道FreeGLUT确实有一种方法可以让你控制主循环,但是使用FreeGLUT的标准方法不能做到这一点

其次,SDL1.2不能创建OpenGL 3.2+,这是正确的。但是,您不必创建核心上下文来使用GL 3.2+;兼容性上下文在这些版本中工作得很好。唯一没有兼容上下文的平台是MacOSX的3.2支持。这样我就不用担心了

你可以试试。这有点像FreeGLUT,只是更以游戏为中心。它使您可以控制渲染循环等。它提供了比FreeGLUT更好的输入处理,以及一些轻图像加载功能(仅TGA文件)。它甚至有一个线程API(尽管我不建议使用这些函数。GLFW2.0将删除它们,因为C++11和C11都有本机线程API)

但是,它没有音频系统

我也听说过SFML,但最终我还是希望使用C语言编写的库,因为我计划编写一个C语言库来处理大部分的原始渲染(为了纯粹的速度和内存管理,从程序上讲)

我将忽略C++的不正确性。