Я реализовал приложение 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);