Opengl Rgba в оттенках серого из 1 компонента - PullRequest
1 голос
/ 15 декабря 2011

Допустим, у меня есть 32-битный пиксельный массив, но я использую только синий канал / компонент из пикселей. Мне нужно загрузить этот массив пикселей в текстуру в формате градаций серого / яркости. Например, если a имеет цвет (a: 0, r: 0, g: 0, b: x), он должен стать (0, x, x, x) в текстуре.

Я использую OpenGL v1.5

1 Ответ

3 голосов
/ 15 декабря 2011

OpenGL до версии 2 имел текстуру внутреннего формата GL_LUMINANCE, которая делает именно то, что вы хотите.

В OpenGL-3 это было заменено внутренним форматом GL_R (GL_RED), который является текстурой одного компонента. В шейдере вы можете использовать алкоголь как

gl_FrontColor.rgb = texture().rrr;

Но есть также опция для установки "статического", который вы можете назвать его swizzle в параметрах текстуры:

glTexParameteri(GL_TEXTURE_…, GL_TEXTURE_SWIZZLE_R, GL_RED);
glTexParameteri(GL_TEXTURE_…, GL_TEXTURE_SWIZZLE_G, GL_RED);
glTexParameteri(GL_TEXTURE_…, GL_TEXTURE_SWIZZLE_B, GL_RED);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...