如何将 SDL 视频嵌入现有 OpenGL 项目

发布于 2024-11-06 04:31:13 字数 93 浏览 4 评论 0原文

我正在开发 OpenGL 游戏,并且想在游戏中的 3D 表面上播放视频。 SDL 似乎是视频播放的绝佳选择,但是否可以在现有 OpenGL 上下文中创建表面?我该怎么做呢?

I'm working on an OpenGL game, and would like to play video on 3D surfaces within the game. SDL seems to be an excellent choice for video playback, but is it possible to create the surface inside of an existing OpenGL context? How would I go about doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天涯离梦残月幽梦 2024-11-13 04:31:13

据我所知,SDL 没有视频播放功能;不要被 SDL_Video 这样的 API 名称所迷惑。这些实际上用于窗口管理。

您需要做的是使用一些视频解码器库将视频解码到图像缓冲区,然后将这些图像缓冲区传递到 OpenGL 纹理中。开源视频播放器mplayer(内部使用ffmpeg libavformat用于视频/音频解码的libavcodec库)也有一个OpenGL视频输出模块。我建议您获取 mplayer 源代码并查看 OpenGL 视频输出模块,以了解如何执行此操作。

编辑:

由于您使用的是 SdlDotNet,我建议使用 SdlDotNet.Graphics.SurfaceGl 作为 SdlDotNet.Graphics.Movie 的目标表面。

SDL has, to my knowledge, no functions for video playback; don't be fooled by API names like SDL_Video. Those are actually used for window management.

What you need to do is using some video decoder library to decode video into image buffers, then pass these image buffers into an OpenGL texture. The open source video player mplayer (which internally uses the ffmpeg libavformat and libavcodec libraries for video/audio decoding) also has an OpenGL video output module. I suggest you fetch the mplayer source code and take a look into the OpenGL video output module, to get an idea how to do this.

EDIT:

Since you're using SdlDotNet, I suggest using a SdlDotNet.Graphics.SurfaceGl as target surface for the SdlDotNet.Graphics.Movie.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文