glDrawPixels灰度?

时间:2009-04-14 01:45:39

标签: c++ opengl

我有一个我正在渲染的图像:

glDrawPixels(image->width, image->height, GL_BGR, GL_UNSIGNED_BYTE, image->imageData);

无论如何我可以用灰度绘制它(不先将它加载到纹理中)?我不在乎是否只将蓝色组件用于灰度值而不是L2范数或其他东西,我只需要一个快速而肮脏的输出。

GL_LUMINANCE会很棒,除了它不适用于3通道图像。


@timday:

1 个答案:

答案 0 :(得分:5)

你尝试的一个不正确的想法,我不知道它是否会起作用:

glPixelZoom(1.0f/3.0f,1.0f);
glDrawPixels(3*width,height,GL_LUMINANCE,GL_UNSIGNED_BYTE,data);

即将3通道图像视为宽度为3倍的1通道(灰度)图像,并使用x变焦系数通过压宽宽度来补偿此图像。我相信GL总是对缩放的glDrawPixels进行最近邻采样,所以它应该根据需要从每个三个样本中一致地挑出相同的组件。