eglCreateImageKHR работает только с форматом RGBA8888.Как отправить данные RGB888? - PullRequest
0 голосов
/ 09 июля 2019

Я реализовал приложение opengl-es, работающее на GPU mali-400.Я беру буфер 1280x960 RGB с камеры и рендеринг на GPU, я использую операцию нулевого копирования, используя расширение EGL_EXT_image_dma_buf_import.

Моя проблема в том, что камера Besler выдает кадры в формате RGB888.но eglCreateImageKHR работает, только если я даю формат RGBA8888.Если я передам RGB888 на eglCreateImageKHR, то получится черный экран, а также, например, будет возвращено значение egl 0.

Придется ли мне конвертировать RGB888 в RGBA8888 перед передачей?Какие есть другие варианты.ниже мой код.

EGLint egl_img_attr[] = { EGL_IMAGE_PRESERVED_KHR, EGL_TRUE,
    EGL_DMA_BUF_PLANE0_FD_EXT, buffer->dbuf_fd,
    EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0,
    EGL_DMA_BUF_PLANE0_PITCH_EXT, TEX_WIDTH * 3,
    EGL_WIDTH, TEX_WIDTH,
    EGL_HEIGHT, TEX_HEIGHT,
    EGL_LINUX_DRM_FOURCC_EXT, DRM_FORMAT_RGBA8888 ,
    EGL_NONE, EGL_NONE };

buffer->egl_img = eglCreateImageKHR(egl_dpy, EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT, (EGLClientBuffer)0, egl_img_attr);
...