我有一个我正在渲染的图像:
glDrawPixels(image->width, image->height, GL_BGR, GL_UNSIGNED_BYTE, image->imageData);
无论如何我可以用灰度绘制它(不先将它加载到纹理中)?我不在乎是否只将蓝色组件用于灰度值而不是L2范数或其他东西,我只需要一个快速而肮脏的输出。
GL_LUMINANCE会很棒,除了它不适用于3通道图像。
@timday:
答案 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进行最近邻采样,所以它应该根据需要从每个三个样本中一致地挑出相同的组件。