eglCreateImageKHR仅适用于RGBA8888格式。如何发送RGB888数据?

时间:2019-07-09 01:58:21

标签: opengl-es gpu egl mali-400

我实现了在Mali-400 gpu上运行的opengl-es应用程序。我从相机上抓取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);

0 个答案:

没有答案