显示 OpenglES 缓冲区的内容

Display contents of OpenglES buffer

本文关键字:缓冲区 OpenglES 显示      更新时间:2023-10-16

我想将 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例程。如何显示开格斯转换的结果?

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