YUV 4.4.2 OpenGL ES текстура

Я хотел бы отобразить мой буфер YUV (поток камеры) непосредственно в текстуру OpenGL. (без преобразования программного обеспечения RGB)

Я обновляю void* правильно. Это работает.

У меня есть другой фрагмент кода, который создает поверхность EGL, и я хотел бы отобразить на нем свой буфер данных. Вот мой код:

void Camera::refreshTexture(void *data)
{

    if (mKHRimage != EGL_NO_IMAGE_KHR)
    {
        eglDestroyImageKHR(mDisplay, mKHRimage);
        mKHRimage = EGL_NO_IMAGE_KHR;
    }

    EGLint eglImageAttributes[] = {EGL_WIDTH, 600, EGL_HEIGHT, 400,
                                   EGL_IMAGE_FORMAT_FSL, EGL_FORMAT_YUV_NV21_FSL, EGL_NONE};
    mKHRimage = eglCreateImageKHR(mDisplay, EGL_NO_CONTEXT,
                                  EGL_NEW_IMAGE_FSL, NULL,
                                  eglImageAttributes);
    if (mKHRimage != EGL_NO_IMAGE_KHR)
    {
        glActiveTexture(GL_TEXTURE0);
        glBindTexture(GL_TEXTURE_2D, glId());
        glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, static_cast<GLeglImageOES>(mKHRimage));

        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
    }
    else
    {
        LOG("Problem allocation Image KHR");
    }

    return true;
}

Проблема в том, что я не знаю, как сдать void *data к изображению, а затем отобразить его.

Спасибо за помощь.

0 ответов

Другие вопросы по тегам