SDL3和QT的结合
SDL3和Qt的组合
sdl作为简单的媒体库,简单易用,对图片操作有API硬件加速,可以高效的操作大量的图片。
并且,SDL可以作为库,和Qt界面库并存,并作为硬件加速的图片处理器来使用。
但是想要做离屏渲染,不方便。
sdl的Renderer创建,必须依赖Window,否则就会使用software渲染,不能使用硬件加速功能。
幸运的是
SDL2中,可以提供了一个专有API可以绑定到windows
核心代码:
Label *imgLabel;
...
SDL_Window *window= SDL_CreateWindowFrom((void *)imgLabel->winId());
SDL3中,并没有提供专有的API,而是把这个功能合并到一个通用的API上,需要填充对应的参数,才能正常工作。
核心代码:
// SDL 3.2.16
Label *imgLabel;
SDL_PropertiesID props = SDL_CreateProperties();
SDL_SetPointerProperty(props, SDL_PROP_WINDOW_CREATE_WIN32_HWND_POINTER, (void *)imgLabel->winId());
SDL_Window *window= SDL_CreateWindowWithProperties(props);
2025年8月17日补充:
windows下,sdl3和qt组合使用的时候,SDL_RenderPresent函数调用之后,立刻读取像素SDL_RenderReadPixels,拿到的不是最新绘制的内容,而是上一帧的内容。
猜测是Qt的调度问题,等到下个绘制周期再刷新。

浙公网安备 33010602011771号