0

我想将 yuv 转换为 rgb 的帧显示为默认显示。目前我正在使用以下代码执行此操作,其中 yuv 到 rgb 的转换是由加载 CPU 的汇编代码完成的。我发现一些代码可以对 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转换的结果?

4

1 回答 1

0

您发布的代码对 OpenGL-ES 没有任何作用。使用 OpenGL(-ES) 实现颜色空间转换的典型方法是将图像加载到纹理中,加载执行颜色转换的片段着色器并绘制(完整视口)纹理四边形(如果四边形是 glDrawArrays 将执行的操作)几何图形之前已加载到顶点数组中)。

于 2013-09-26T07:49:25.433 回答