【问题标题】:How to emulate GL_TEXTURE_EXTERNAL_OES texture?如何模拟 GL_TEXTURE_EXTERNAL_OES 纹理?
【发布时间】:2019-01-01 04:15:16
【问题描述】:

我有一个 OpenGL ES 2.0 QNX 应用程序,它使用相机输入、进行一些处理并将某些内容呈现到屏幕上。

我所有的着色器都从相机获取 GL_TEXTURE_EXTERNAL_OES 纹理作为输入,它的格式是 YUV422。

我想在目标平台 (QNX) 上使用 png 格式的 RGB 图像测试我的应用程序。

问题是:如何从 RGB 图像创建 GL_TEXTURE_EXTERNAL_OES 纹理以模拟我的应用程序的相机输入?

【问题讨论】:

    标签: opengl-es textures opengl-es-2.0 yuv qnx


    【解决方案1】:

    回答自己的问题。

    从 QNX 上的 RGB 缓冲区创建 GL_TEXTURE_EXTERNAL_OES 纹理的步骤。

    1.在CPU上将RGB转为YUV422格式

    2.使用screen创建像素图缓冲区

    EGLNativePixmapType pObjEglPixmap = ...
    

    3.使用 EGLImageKHR 对象将像素图绑定到 GL_TEXTURE_EXTERNAL_OES 纹理

    EGLImageKHR pObjTextureEglImage = eglCreateImageKHR(eglDisplay,
                                                        EGL_NO_CONTEXT,
                                                        EGL_NATIVE_PIXMAP_KHR,
                                                        pObjEglPixmap,
                                                        NULL);
    
    GLuint pObjTextureId;
    glGenTextures(1, &pObjTextureId);
    
    glBindTexture(GL_TEXTURE_EXTERNAL_OES, pObjTextureId);
    
    glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    
    glEGLImageTargetTexture2DOES(GL_TEXTURE_EXTERNAL_OES, 
                                 (GLeglImageOES)pObjTextureEglImage);
    

    【讨论】:

      猜你喜欢
      • 2016-09-13
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多