Qt 以平台无关的方式在QWidget上呈现SDL_曲面

Qt 以平台无关的方式在QWidget上呈现SDL_曲面,qt,sdl,Qt,Sdl,我有一个SDL_surface,它在自己的窗口中播放视频。我希望此窗口在QWidget上呈现。我想要一个通用的解决方案,因为我的目标是OSX、Windows和Linux 我遇到的情况总结如下: 窗口ID破解涉及将SDL\u WINDOWID设置为QWidget的ID,以便SDL在QWidget上推送像素。下面是一个来自相关线程的示例 但是,这在OSX上不起作用,也不能保证在所有Win和Linux平台上都能起作用 手动将从非窗口SDL_曲面复制到QWidget 到目前为止,找到了一些但没有找到。

我有一个
SDL_surface
,它在自己的窗口中播放视频。我希望此窗口在
QWidget
上呈现。我想要一个通用的解决方案,因为我的目标是OSX、Windows和Linux

我遇到的情况总结如下:

  • 窗口ID破解涉及将
    SDL\u WINDOWID
    设置为QWidget的ID,以便SDL在QWidget上推送像素。下面是一个来自相关线程的示例

    但是,这在OSX上不起作用,也不能保证在所有Win和Linux平台上都能起作用

  • 手动将从非窗口SDL_曲面复制到QWidget

    到目前为止,找到了一些但没有找到。其想法是将视频推送到内存,然后从QWidget中取出。当然,不应该使用QImage来渲染每个帧。那么如何实现这种复制呢


  • 可能存在重复的问题,但我的问题更具体的是平台独立性

    SDL_曲面
    检索像素,并用它创建一个
    QImage
    ,然后使用
    qPaint
    在小部件上绘制
    QImage

    与创建QImage相关的开销是否会使其效率低下,就像我在问题中所说的那样?我没有,但今天晚些时候可能会写一些。但是你的问题没有标记为C/C++……我也在尝试编写代码。当我完成后会更新,如果你有兴趣的话只是想澄清一下,在我建议的方法中确实没有数据转换。瓶颈实际上是在屏幕上画东西为了加快速度,.FYI了解了如何将SDL_曲面转换为QImage。它起作用了。谢谢你为我指明了正确的方向