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
к изображению, а затем отобразить его.
Спасибо за помощь.