首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLSL和glReadPixels

GLSL和glReadPixels
EN

Stack Overflow用户
提问于 2011-11-15 16:25:21
回答 1查看 1.5K关注 0票数 1

我正在使用OpenGL ES 2.0和GLSL来绘制对象。然后我想从我的片段着色器在屏幕上绘制的任何内容中读取像素。我混合了两个灰度纹理,在我的片段着色器的末尾,我有:

gl_FragColor = vec4(something...blending textures);

我知道gl_FragColor意味着最终的颜色将被写入帧缓冲区。(根据http://nehe.gamedev.net/article/glsl_an_introduction/25007/的说法)鉴于此,我做了一些类似的事情

代码语言:javascript
复制
GLubyte *pixels = new GLubyte[320*240];
glReadPixels(0, 0, 320,240, GL_LUMINANCE, GL_UNSIGNED_BYTE, pixels);

在使用它绘制图像后,首先,我得到了与原始texture1相同的图像,然后得到了黑色的空颜色。有谁能帮我出什么事了吗?我需要用FBO做点什么吗?我有点迷失了……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-15 23:58:35

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

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

因此,GL_LUMINANCE在GL ES中不是一种受支持的读取格式。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8133386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档