【问题标题】:Display contents of OpenglES buffer显示 OpenGLES 缓冲区的内容
【发布时间】:2013-09-26 22:30:49
【问题描述】:

我想显示一个 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转换的结果?

【问题讨论】:

    标签: c++ opengl-es opengl-es-2.0


    【解决方案1】:

    您发布的代码对 OpenGL-ES 没有任何作用。使用 OpenGL(-ES) 实现颜色空间转换的典型方法是将图像加载到 纹理 中,加载执行颜色转换的 片段着色器draw 一个(全视口)带纹理的四边形(如果之前已经将四边形的几何图形加载到顶点数组中,这就是 glDrawArrays 会做的事情)。

    【讨论】:

    • 我得到了相当于 Yuv420_to_RGB 函数的 OpenGLES。我缺乏的是如何显示转换后的内容。即将opengles缓冲区内容显示到表面
    • @RagFox:好吧,绘制一个所需大小的带纹理的四边形,纹理为图像。就是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多