如何模拟 GL_TEXTURE_EXTERNAL_OES 纹理?
How to emulate GL_TEXTURE_EXTERNAL_OES texture?
我有一个 OpenGL ES 2.0 QNX 应用程序,它使用相机输入,进行一些处理并将某些内容渲染到屏幕上。
我所有的着色器都从相机获取 GL_TEXTURE_EXTERNAL_OES 纹理作为输入,它的格式是 YUV422。
我想使用 png 格式的 RGB 图像在目标平台 (QNX) 上测试我的应用程序。
问题是:如何从 RGB 图像创建 GL_TEXTURE_EXTERNAL_OES 纹理来为我的应用程序模拟相机的输入?
回答自己的问题。
在 QNX 上从 RGB 缓冲区创建 GL_TEXTURE_EXTERNAL_OES 纹理的步骤。
1.Converting CPU
上的 RGB 到 YUV422 格式
2.Creating 像素图缓冲区使用 screen
EGLNativePixmapType pObjEglPixmap = ...
3.Binding 使用 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);
我有一个 OpenGL ES 2.0 QNX 应用程序,它使用相机输入,进行一些处理并将某些内容渲染到屏幕上。
我所有的着色器都从相机获取 GL_TEXTURE_EXTERNAL_OES 纹理作为输入,它的格式是 YUV422。
我想使用 png 格式的 RGB 图像在目标平台 (QNX) 上测试我的应用程序。
问题是:如何从 RGB 图像创建 GL_TEXTURE_EXTERNAL_OES 纹理来为我的应用程序模拟相机的输入?
回答自己的问题。
在 QNX 上从 RGB 缓冲区创建 GL_TEXTURE_EXTERNAL_OES 纹理的步骤。
1.Converting CPU
上的 RGB 到 YUV422 格式2.Creating 像素图缓冲区使用 screen
EGLNativePixmapType pObjEglPixmap = ...
3.Binding 使用 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);