如何仅将部分 OpenGL 代码实现到使用 SDL 编写的游戏中?
Posted
技术标签:
【中文标题】如何仅将部分 OpenGL 代码实现到使用 SDL 编写的游戏中?【英文标题】:How to implement only a part of OpenGL code to game that is written using SDL? 【发布时间】:2018-05-22 17:28:47 【问题描述】:所以,我正在制作一款类似于 Vector Runner 的游戏。我有一个背景纹理和几个使用 SDL 实现的纹理对象。我想旋转背景 使用 glRotate。我不希望它移动或任何东西,我只想对它有不同的看法(类似于第三人称视角)并保持这种状态。由于现在一切都是 SDL,我可以只制作 background.h 和 .cpp 并仅在那里实现 OpenGL,还是我需要在整个代码中使用它,或者有没有办法使用 SDL 来实现?
【问题讨论】:
SDL 使用的是哪个后端驱动程序,它支持 OpenGL?尝试在同一表面上混合搭配不同的图形驱动程序充其量是有问题的。请参阅 支持的后端:en.wikipedia.org/wiki/Simple_DirectMedia_Layer 【参考方案1】:就个人而言,我不会尝试将 OpenGL 与 SDL 的 2D 表面类型代码混合使用。我要么使用 OpenGL 来实现精灵(更快,更多的操作选项),要么在可能的情况下使用 SDL 函数(最简单的选项),或者使用软件渲染来旋转背景(非常便携,一切都在你的控制之下)。
我想使用 glRotate 旋转背景。我不希望它移动或 任何东西,我只是想对它有不同的看法(类似于第三 人视图)并保持这种状态。
如果您想自己进行旋转,您可以使用texture mapping techniques,并自己逐像素渲染。如果背景不移动,您只需执行一次并将结果存储在缓冲区中。
SDL 还有一个渲染功能,可以让您选择旋转源图像(没有透视变换选项):https://wiki.libsdl.org/SDL_RenderCopyEx
【讨论】:
以上是关于如何仅将部分 OpenGL 代码实现到使用 SDL 编写的游戏中?的主要内容,如果未能解决你的问题,请参考以下文章
c++:如何使用 sdl 将位图加载到 opengl 中的多维数据集中?
在 OpenGL 上下文中使用 SDL 进行 Blitting
如何使用 GLEW、OpenGL 或 SDL2 以椭圆运动围绕另一个圆圈旋转一个圆圈?