SDL的创建与渲染,为什么不能用线程分开处理

两个线程:主线程和子线程;

1、主线程用来创建SDL

if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
    {
        qDebug()<< "initSdl() SDL_Init() error!" <<__FILE__<<" "<<__LINE__;
        return;
    }

    // 创建窗体
    m_psdlWindow = SDL_CreateWindowFrom((void *)m_WId);
    if (m_psdlWindow == nullptr){
        qDebug()<< "SDL_CreateWindowFrom() error!" <<__FILE__<<" "<<__LINE__;
        return;
    }

    // 从窗体创建渲染器
    m_psdlRenderer = SDL_CreateRenderer(m_psdlWindow, -1, 0);
    if (m_psdlRenderer == nullptr){
        qDebug()<< "SDL_CreateRenderer() error!" <<__FILE__<<" "<<__LINE__;
        return;
    }

    // 创建渲染器纹理
    m_psdlTexture = SDL_CreateTexture(m_psdlRenderer, SDL_PIXELFORMAT_IYUV, SDL_TEXTUREACCESS_STREAMING, m_mWidth, m_mHeight);
    if (m_psdlTexture == nullptr){
        qDebug()<< "SDL_CreateTexture() error!" <<__FILE__<<" "<<__LINE__;
        return;
    }

2、子线程用来渲染画面

    SDL_UpdateYUVTexture(m_psdlTexture, NULL, pFrame->data[0], pFrame->linesize[0],
            pFrame->data[1], pFrame->linesize[1], pFrame->data[2],
            pFrame->linesize[2]);

    SDL_UpdateTexture( m_psdlTexture,NULL, m_pVideoBuffer, pitch);
    SDL_RenderClear(m_psdlRenderer);
    SDL_RenderCopy(m_psdlRenderer, m_psdlTexture, NULL, NULL);
    SDL_RenderPresent(m_psdlRenderer);

    av_frame_free(&pFrame);

问题是无法渲染出画面?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值