Opengl es 如何将opengl处理过的数据从GPU读回主机内存

Opengl es 如何将opengl处理过的数据从GPU读回主机内存,opengl-es,yuv,rgba,Opengl Es,Yuv,Rgba,我想将yuv420图像转换为rgb888图像。我得到了下面的链接。 这个程序对我来说很好。 现在我想把我处理过的rgb数据从GPU读回主机内存。我曾尝试过使用glGetTexImage,但它只提供最后一次绑定的纹理数据 有人能告诉我如何将处理后的RGB数据从GPU读回主机内存吗 我还有另一个问题,如果我能成功地将数据从GPU读回主机内存,那么它将是RGB或RGBA?使用glReadPixels命令。语法为“glReadPixels”(闪烁x、闪烁y、GLsizei宽度、GLsizei高度、格伦

我想将yuv420图像转换为rgb888图像。我得到了下面的链接。

这个程序对我来说很好。 现在我想把我处理过的rgb数据从GPU读回主机内存。我曾尝试过使用glGetTexImage,但它只提供最后一次绑定的纹理数据

有人能告诉我如何将处理后的RGB数据从GPU读回主机内存吗


我还有另一个问题,如果我能成功地将数据从GPU读回主机内存,那么它将是RGB或RGBA?

使用
glReadPixels
命令。语法为“glReadPixels”(闪烁x、闪烁y、GLsizei宽度、GLsizei高度、格伦格式、格伦类型、GLvoid*数据)

x
y
指定要从帧缓冲区读取的矩形左下角的位置,
format
接受
GL_ALPHA
GL_RGB
GL_RGBA
类型
是像素数据的类型,
数据
是指向返回数据数组的指针。
格式
指定数据是RGB、RGBA还是alpha


有关更多信息,请访问。

谢谢您的回复。我尝试了下面的代码来获取处理后的RGB值并将其写入文件,但当我试图打开RGB图像时,它显示了错误的图像。您能告诉我如何对720x576YUV图像使用glreadpixels()吗。int-write;fp=fopen(“结果”\u t.rgb,“w+”);无符号字符像素[1244160]={0};glReadPixels(0,0720576,GL_RGB,GL_无符号字节,像素);write=fwrite(像素,1720*576*3,fp);printf(“写入=%d\n”,写入);fclose(fp);对不起,上面的帖子。谢谢你的回复。我尝试了下面的代码来获取处理后的RGB值并将其写入文件,但当我尝试使用vooya打开RGB图像时,它会给我180'的旋转图像,即我的第一行原始像素变为最后一行像素,第二行原始像素变为最后第二行像素,依此类推。你能告诉我为什么会这样吗?glReadPixels(0,0720576,GL_RGB,GL_无符号字节,像素)@布拉格尼什帕特尔没问题。之所以翻转,是因为OpenGL的Y轴指向上方,而其他软件/屏幕的Y轴指向下方。您需要将其作为数组或在写入文件时自行翻转。