一、QT中使用SDL注意事项
1、和配置其他第三方库一样.pro中需要配置 .h 和 .lib 的路径
2、.h 中需要配置SDL.h SDL_thread.h SDL_main.h 三个头文件
3、如果入口函数是int main(int argc, char *argv[])则不用加 #undef main;
4、如果入口函数是int main()则需要加#undef main;
5、注意勤进行清理工作
6、代码
UI主线程创建窗口
SDL_Window *screen;
SDL_Renderer *render;
SDL_Texture *texture;
SDL_Thread *video_thread;
SDL_Event event;
SDL_Rect prect;
int texture_w,texture_h;
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER))
{
qDebug()<<"初始化sdl失败";
return -1;
}
texture_w = 1920;
texture_h = 1080;
screen = SDL_CreateWindowFrom((void *)w.ui->label_16->winId());//此处的用于SDL嵌入QT的label组件
if(!screen)
{
qDebug()<<"创建窗口失败";
return -1;
}
render = SDL_CreateRenderer(screen, -1, 0);
texture = SDL_CreateTexture(render, SDL_PIXELFORMAT_BGRA32, SDL_TEXTUREACCESS_STREAMING, 1920, 1080);//色彩空间
prect.x = 0;
prect.y = 0;
prect.w = 1920;
prect.h = 1080;
子线程刷新画面
SDL_UpdateTexture(texture, NULL, p_global_bgr_buffer, *dstStride );
SDL_RenderClear(render);
SDL_RenderCopy(render, texture, NULL, NULL);
SDL_RenderPresent(render);