我正在开发OpenGL游戏,并希望在游戏中的3D表面上播放视频。 SDL似乎是视频播放的绝佳选择,但是可以在现有的OpenGL上下文中创建表面吗?我该怎么做呢?
答案 0 :(得分:5)
SDL_Video
这样的API名称所迷惑。这些实际上用于窗口管理。
您需要做的是使用一些视频解码器库将视频解码为图像缓冲区,然后将这些图像缓冲区传递到OpenGL纹理中。开源视频播放器 mplayer (内部使用ffmpeg libavformat 和 libavcodec 库进行视频/音频解码)也有一个OpenGL视频输出模块。我建议您获取mplayer源代码并查看OpenGL视频输出模块,以了解如何执行此操作。
修改强>
由于您使用的是SdlDotNet,我建议使用SdlDotNet.Graphics.SurfaceGl
作为SdlDotNet.Graphics.Movie
的目标表面。