OpenGL Альфа-канал подробности?

Я написал простой 24-битный загрузчик растровых изображений в OpenGL. Я открываю файл растрового изображения и читаю его пиксели, а затем создаю массив данных пикселей RGB, который затем передам в glDrawPixels ().

Эта проблема:
Мне нужно сделать некоторые пиксели моего изображения прозрачными, но я не уверен, как работает альфа-канал. Я не уверен, какой тип параметров передать format а также type в glDrawPixels, если я хочу добавить прозрачность? Я попытался создать файл растрового изображения с альфа-каналом, но затем, посмотрев содержимое файла, 4-й байт (альфа) всегда равен нулю, и само изображение также не выглядит прозрачным.

Это моя RGB структура файла:

struct bmpRGB{
unsigned char R, G, B;
};

Что мне нужно добавить к этому, чтобы включить Альфа? И что type параметр я должен передать в функцию при использовании RGBA? Я собираюсь добавить альфа-канал сам, когда заполняю массив пикселей, но мне нужно знать структуру данных, необходимую для этого.

Это то, что я делаю сейчас:

glDrawPixels(bmp->Width, bmp->Height, GL_RGB,GL_UNSIGNED_BYTE, bmp->Data);

2

Решение

Прикрепите альфа-компонент и установите format в GL_RGBA:

struct bmpRGB
{
unsigned char R, G, B, A;
};

glDrawPixels(bmp->Width, bmp->Height, GL_RGBA, GL_UNSIGNED_BYTE, bmp->Data);

Убедитесь, что вы включили и настроили смешивание.

0

Другие решения

Других решений пока нет …