C++ 灰度中有多少像素?
我有一个我正在渲染的图像,如下所示:C++ 灰度中有多少像素?,c++,opengl,C++,Opengl,我有一个我正在渲染的图像,如下所示: glDrawPixels(image->width, image->height, GL_BGR, GL_UNSIGNED_BYTE, image->imageData); 我是否可以用灰度来代替它(不需要先将它加载到纹理中)?我不在乎是否只是,比方说,蓝色分量用于灰度值,而不是L2范数或其他什么,我只需要一个快速而肮脏的输出 GL_亮度将是伟大的,除了它不会工作在一个3通道图像 @提姆日: 这是一个让你尝试的反常想法,我不知道它是否有
glDrawPixels(image->width, image->height, GL_BGR, GL_UNSIGNED_BYTE, image->imageData);
我是否可以用灰度来代替它(不需要先将它加载到纹理中)?我不在乎是否只是,比方说,蓝色分量用于灰度值,而不是L2范数或其他什么,我只需要一个快速而肮脏的输出
GL_亮度将是伟大的,除了它不会工作在一个3通道图像
@提姆日:
这是一个让你尝试的反常想法,我不知道它是否有效:
glPixelZoom(1.0f/3.0f,1.0f);
glDrawPixels(3*width,height,GL_LUMINANCE,GL_UNSIGNED_BYTE,data);
ie将3通道图像视为3倍宽的1通道(灰度)图像,并通过使用x缩放因子挤压宽度进行补偿。我相信GL总是对缩放后的glDrawPixels进行最近邻采样,所以它应该按照您的要求,从每三个采样点中始终选择相同的分量。哦,我的天。。。。。我真不敢相信这样行得通!它可以将图像分成两半,一面比另一面颗粒更细,但它可以工作。这可能与内部保持1.0/3.0的精度有关(特别是当它可以工作到一定大小时)。我建议稍微调整一下比例,或者使用每像素4字节的格式和0.25的缩放因子。