2013-09-26 63 views
0

我想显示一个yuv到rgb转换帧为默认显示。目前我正在用下面的代码来执行它,其中yuv到rgb的转换由加载CPU的汇编代码完成。我发现了一些代码来做与opengles相同的代码。OpenglES缓冲区的显示内容

Yuv420_to_RGB(ui8buf, buffer1, h1, w1); /* RGB data will be resulted in buffer1 */ 
window = ANativeWindow_fromSurface(env, surface); 
ANativeWindow_acquire(window); 
wid = ANativeWindow_getWidth(window); 
hei = ANativeWindow_getHeight(window); 
ANativeWindow_setBuffersGeometry(window,w1,h1,1) 

if (ANativeWindow_lock(window, &buffer, NULL) == 0) 
{ 
    memcpy(buffer.bits, buffer1, (4* w1*h1)); 
    ANativeWindow_unlockAndPost(window); 
} 
ANativeWindow_release(window); 

我有以glDrawArrays结尾的opengles例程。我如何显示opengles转换的结果?

回答

0

您发布的任何代码都不会对OpenGL-ES做任何事情。的典型方法来实现用OpenGL(-ES)颜色空间变换到图像加载到纹理,加载片段着色器执行色彩转换和绘制一个(全视口)纹理四(这是如果四边形的几何被加载到顶点数组之前,glDrawArrays会做什么)。

+0

我得到了OpenGLES相当于Yuv420_to_RGB函数。我缺乏的是如何显示转换的内容。即展示opengles缓冲区内容到表面 – RagFox

+0

@RagFox:好吧,用纹理作为图像绘制所需大小的纹理四边形。那是怎么做到的。 – datenwolf