Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 灰度中有多少像素?_C++_Opengl - Fatal编程技术网

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的缩放因子。