有没有办法使用 glDrawPixels 渲染单通道灰度图像?
Posted
技术标签:
【中文标题】有没有办法使用 glDrawPixels 渲染单通道灰度图像?【英文标题】:Is there a way to render single channel greyscale images using glDrawPixels? 【发布时间】:2019-09-04 13:54:22 【问题描述】:我正在尝试创建一个使用 oiio 和 OpenGL 处理所有类型图像的程序(简单的函数,没什么太疯狂的)。
我有 4 通道和 3 通道图像工作,我只是不确定如何渲染灰度(1 通道)图像。
if (channels == 4)
glDrawPixels(W, H, GL_RGBA, GL_FLOAT, img);
我希望答案类似于上面的 sn-p。
【问题讨论】:
看看glDrawPixels。恕我直言,用GL_LUMINANCE
替换GL_RGBA
应该可以处理灰度图像(1 个通道)。
@Scheff 谢谢!那解决了它。我不确定那个命令是什么,因为它听起来不像我需要使用的东西。
【参考方案1】:
如果您需要一个每个像素都是一个灰度值的图像,那么您可以使用 格式 GL_LUMINANCE
。见glDrawPixels
。
转换后的亮度值设置为红绿蓝颜色通道,alpha通道将设置为1。
如果每个像素的类型是32位浮点值,则格式为GL_FLOAT
:
glDrawPixels(W, H, GL_LUMINANCE, GL_FLOAT, img);
如果灰度值以字节编码,则必须使用无符号归一化浮点格式GL_UNSIGNED_BYTE
:
glDrawPixels(W, H, GL_LUMINANCE, GL_UNSIGNED_BYTE, img);
【讨论】:
以上是关于有没有办法使用 glDrawPixels 渲染单通道灰度图像?的主要内容,如果未能解决你的问题,请参考以下文章