首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么来自RGBA纹理的glGetTexImage2D(GL_LUMINANCE)只返回红色分量?

为什么来自RGBA纹理的glGetTexImage2D(GL_LUMINANCE)只返回红色分量?
EN

Stack Overflow用户
提问于 2019-02-16 23:42:17
回答 1查看 239关注 0票数 0

我正在学习遗留的OpenGL,并发现来自RGBA镜像的glGetTexImage2D(GL_LUMINANCE)只返回红色组件作为结果。

根据一些手册页面,我希望结果是R+G+B

这甚至是一个用于Mesa3D的test case

为什么是这样的呢?我查看了OpenGL规范,但找不到与此行为匹配的描述。

更新:

此外,glCopyTexImage2D(GL_LUMINANCE)仅从RGBA帧缓冲区复制红色分量作为亮度,这似乎是相关的。我也不明白这一点。

EN

回答 1

Stack Overflow用户

发布于 2019-02-17 01:20:21

根据documentation for glTexImage2D的说法

GL_LUMINANCE

每个元素都是单个亮度值。GL将其转换为浮点数,然后通过复制三次红色、绿色和蓝色的亮度值并为alpha附加1来将其组合为RGBA元素。然后将每个分量乘以带符号的比例因子GL_c_SCALE,与带符号的偏置GL_c_BIAS相加,并钳位到范围0,1

因此,在上传时,您上传的是单通道图像。从GPU下载图像时,您会得到相同的结果,这是有道理的。

在您链接到的test_fbo_readpixels_lum_as_rgba()代码中,上传的亮度图像是2x2图像,其中每个像素包含0.25。然后,他们将图像下载为RGBA,并期望得到4个像素,每个像素包含(0.25,0.0,0.0,1.0)。这与您所看到的内容和上面的文档所说的内容相匹配。

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

https://stackoverflow.com/questions/54724781

复制
相关文章

相似问题

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