为什么SDL和OpenGL有关?

Dev*_*gay 44 c c++ opengl sdl

我正在搞乱SDL,发现你不能用SDL旋转图像.问题到处都是,人们说使用OpenGL进行轮换.我一直认为SDL与OpenGL是完全分开的,我在思考这个问题时错了吗?我甚至找到了在SDL中使用OpenGL的教程,这让我更加困惑.SDL和OpenGL之间究竟有什么关系?为什么不使用OpenGL,如果它更强大,并允许你做更多(这是从我读过)?

kar*_*lip 28

SDL是一个跨平台的多媒体库,旨在提供对音频,键盘,鼠标,操纵杆等的低级访问.它还通过OpenGL支持3D硬件.

OpenGL 是一种标准规范,定义了跨语言的跨平台API,用于编写生成2D和3D计算机图形的应用程序.该界面由超过250种不同的函数调用组成,可用于从简单的基元绘制复杂的三维场景.OpenGL由Silicon Graphics Inc.(SGI)于1992年开发[4],广泛应用于CAD,虚拟现实,科学可视化,信息可视化和飞行模拟.它也用于视频游戏,它与Microsoft Windows平台上的Direct3D竞争(参见OpenGL与Direct3D).

  • 我相信这里要回答的关键问题是:“ SDL和OpenGL之间到底是什么关系?” 从初学者的角度来看,这两种技术的教科书定义可能会造成混淆。 (9认同)

J T*_*ana 18

SDL是OpenGL之上的一层; 实际上它默认在Windows上使用GDI,并且还有一个DirectX后端.人们可能会说你可以使用OpenGL 在默认使用OpenGL(ahem,Linux)的平台上克服SDL的限制,因为更高级别的抽象不会暴露这种功能.但是,您的代码"不太"可移植到Windows(或至少使用GDI后端的Windows).

此外,除了图形之外,SDL还做了许多其他的事情 - 音频,输入等,而OpenGL却没有.

  • 文档或其他地方是否有关于 SDL 在 Windows 上使用 GDI 的证明? (3认同)
  • [维基百科](http://en.wikipedia.org/wiki/Simple_DirectMedia_Layer) 在“端口”部分指出 GDI 是 Windows 的默认后端。 (2认同)

Pup*_*ppy 7

SDL将OpenGL用作需要在某些平台上进行硬件渲染的内容的硬件渲染器.如果你有这样一个平台,那么OpenGL就是SDL作为抽象的底层API.


Sur*_*ine 6

SDL处理输入,窗口创建,图像加载以及OpenGL无法处理的其他一些功能.


Kos*_*Kos 6

关于旋转图形的示例:使用OpenGL(即硬件加速)比使用SDL本身(即在CPU上)更好,因为它通常是计算密集型的(特别是如果你有很多位图来旋转每一帧和你希望效果是平滑的).

但是,除了原因之外,没有任何东西可以阻止您使用SDL_gfx软件包,该软件包具有负责旋转和缩放位图的模块SDL_rotozoom.


Ska*_*lli 5

正如许多人所说。SDL不仅处理渲染。除了处理音频,输入和所有其他好东西之外,它还使您可以访问许多功能,而这些功能本来需要您自己实现的,因此可以简化图形的使用。
是的,SDL是OpenGL之上的抽象层。您仍然可以在应用程序中访问OpenGL,因此可以发挥其全部功能。
一个简单的补充,因为您似乎对这种API还是陌生的:如果您想要一个类似于SDL(用于2D图形)的API,我建议您看一下SFML。它基于C ++,而不是C,具有用于旋转之类的功能。它也基于OpenGL。:)