我正在尝试使用 oiio 和 OpenGL 创建一个处理所有类型图像的程序(简单的功能,没什么太疯狂的)。
我已经有 4 channel 和 3 channel 图像工作,我只是不确定如何渲染灰度(1 channel )图像。
if (channels == 4){
glDrawPixels(W, H, GL_RGBA, GL_FLOAT, img);
}
我希望答案与上面的代码片段类似。
最佳答案
如果您需要的图像中每个像素都是单个灰度值,那么您可以使用 格式 GL_LUMINANCE
。请参阅glDrawPixels
.
亮度值转换后设置为红、绿、蓝颜色 channel ,alpha channel 设置为1。
如果每个像素的类型是32位浮点值,则格式为GL_FLOAT
:
glDrawPixels(W, H, GL_LUMINANCE, GL_FLOAT, img);
如果灰度值以字节编码,则必须使用无符号标准化浮点格式GL_UNSIGNED_BYTE
:
glDrawPixels(W, H, GL_LUMINANCE, GL_UNSIGNED_BYTE, img);
关于c++ - 有没有办法使用 glDrawPixels 渲染单 channel 灰度图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57789988/