OpengGL Как отрисовать картинку перед рендерингом YUV-данных видео - PullRequest
0 голосов
/ 10 апреля 2019

Я использую OpengGL PBO для рендеринга YUV-данных видео, но я хочу рендерить изображение по умолчанию перед рендерингом YUV-данных, в изображении по умолчанию записывается «video is loading ...».

создать буфер PBO :

_pbo    =   createPBuffer(_ffReader._screenW,_ffReader._screenH + _ffReader._screenH/2);

обновить текстуру :

void    updateTexture(FrameInfor* data)
{
    int     w       =   _ffReader._screenW;
    int     h       =   _ffReader._screenH + _ffReader._screenH/2;

    glBindBuffer(GL_PIXEL_UNPACK_BUFFER, _pbo);
    GLubyte* dst = (GLubyte*)glMapBuffer(GL_PIXEL_UNPACK_BUFFER, GL_WRITE_ONLY);

    if( dst != 0)
    {
        memcpy(dst,data->_data->data[0],_ffReader._screenW * _ffReader._screenH);

        updateImage(dst,0,                      _ffReader._screenH,_ffReader._screenW/2,_ffReader._screenH/2,data->_data->data[1]);
        updateImage(dst,_ffReader._screenW/2,   _ffReader._screenH,_ffReader._screenW/2,_ffReader._screenH/2,data->_data->data[2]);
        glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
    }
    glBindTexture(GL_TEXTURE_2D,_textureYUV);
    glTexSubImage2D(GL_TEXTURE_2D,0,0,0,w,h,GL_ALPHA,GL_UNSIGNED_BYTE,0);
    glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
}

это функция для создания буфера PBO:

 unsigned    createPBuffer(int w,int h)
{   
    unsigned    pbuffer =   0;
    glGenBuffers(1, &pbuffer);
    glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbuffer);
    glBufferData(GL_PIXEL_UNPACK_BUFFER, w* h, 0, GL_STREAM_DRAW);
    glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);

    return  pbuffer;
}

так, как я мог поместить изображение по умолчанию перед рендерингом данных YUV?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...