glDrawPixels в оттенках серого? - PullRequest
3 голосов
/ 14 апреля 2009

У меня есть изображение, которое я рендерил так:

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

Могу ли я вместо этого нарисовать его в оттенках серого (не загружая его сначала в текстуру)? Мне все равно, если только, скажем, синий компонент используется для значения серого, а не нормы L2 или чего-то еще, мне просто нужен быстрый и грязный вывод.

GL_LUMINANCE было бы здорово, за исключением того, что он не будет работать с 3-канальным изображением.


@ timday:

1 Ответ

5 голосов
/ 14 апреля 2009

Извращенная идея для вас, чтобы попробовать, и я не знаю, сработает ли это:

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

т.е. рассматривайте ваше 3-канальное изображение как изображение с 1 каналом (в градациях серого) в 3 раза шире и компенсируйте это, уменьшая ширину с помощью коэффициента увеличения x. Я считаю, что GL всегда выполняет выборку ближайшего соседа для увеличенного glDrawPixels, поэтому он должен последовательно выбирать один и тот же компонент из каждой тройки выборок, как вам требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...