Opengl es GLSL和glReadPixels

Opengl es GLSL和glReadPixels,opengl-es,glsl,Opengl Es,Glsl,我正在使用OpenGLES2.0和GLSL绘制对象。 然后我想从我的碎片着色器在屏幕上绘制的任何东西中读取像素。 我正在混合两个灰度纹理,在片段着色器的末尾,我有: gl_FragColor=vec4(某物…混合纹理) 我知道gl_FragColor意味着最终颜色将写入帧缓冲区。 (根据) 鉴于此,我做了一些类似的事情 GLubyte *pixels = new GLubyte[320*240]; glReadPixels(0, 0, 320,240, GL_LUMINANCE, GL_UNSI

我正在使用OpenGLES2.0和GLSL绘制对象。 然后我想从我的碎片着色器在屏幕上绘制的任何东西中读取像素。 我正在混合两个灰度纹理,在片段着色器的末尾,我有:

gl_FragColor=vec4(某物…混合纹理)

我知道gl_FragColor意味着最终颜色将写入帧缓冲区。 (根据) 鉴于此,我做了一些类似的事情

GLubyte *pixels = new GLubyte[320*240];
glReadPixels(0, 0, 320,240, GL_LUMINANCE, GL_UNSIGNED_BYTE, pixels);

在使用它绘制图像后,首先,我得到与原始纹理相同的纹理1,然后得到黑色的空颜色。有人能帮我吗?怎么了?我需要和FBO做点什么吗?我有点迷路了…:(

根据规范的ES 2.0文档,格式参数:

指定像素数据的格式。以下符号值 接受的参数为:GL_ALPHA、GL_RGB和GL_RGBA

因此,
GL\u亮度
在GL ES中不是受支持的读取格式


除此之外,假设您有某种工作帧缓冲区,并且您正在通过将适当放置的几何体渲染到帧缓冲区来应用片段着色器,
glReadPixels
应该是正确的使用方法。

我假设在glReadPixels之后,您更新了一个纹理,该纹理输入到ne中的着色器中xt frame?发布更多关于如何更新纹理的代码,可能存在错误。请向我们展示您程序中的代码,这些行正在卸载。