[英]How to emulate GL_TEXTURE_EXTERNAL_OES texture?
I have a OpenGL ES 2.0 QNX application that uses camera input, makes some processing and renders something to screen. 我有一个OpenGL ES 2.0 QNX应用程序,它使用相机输入,进行一些处理并呈现屏幕内容。
All my shaders take GL_TEXTURE_EXTERNAL_OES texture from the camera as input and it's format is YUV422. 我的所有着色器都将相机的GL_TEXTURE_EXTERNAL_OES纹理作为输入,其格式为YUV422。
I want to test my application on the target platform (QNX) using RGB images in png format. 我想使用png格式的RGB图像在目标平台(QNX)上测试我的应用程序。
The question is: how can I create GL_TEXTURE_EXTERNAL_OES texture from RGB image to emulate the input from the camera for my application? 问题是:如何从RGB图像创建GL_TEXTURE_EXTERNAL_OES纹理,以模拟我的应用程序从相机输入?
Answering own question. 回答自己的问题。
Steps to create GL_TEXTURE_EXTERNAL_OES texture from RGB buffer on QNX. 从QNX上的RGB缓冲区创建GL_TEXTURE_EXTERNAL_OES纹理的步骤。
1.Converting RGB to YUV422 format on CPU 1.在CPU上将RGB转换为YUV422格式
2.Creating pixmap buffer using screen 2.使用屏幕创建pixmap缓冲区
EGLNativePixmapType pObjEglPixmap = ...
3.Binding pixmap to GL_TEXTURE_EXTERNAL_OES texture using EGLImageKHR object 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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.