Я написал простой 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);
Прикрепите альфа-компонент и установите format
в GL_RGBA
:
struct bmpRGB
{
unsigned char R, G, B, A;
};
glDrawPixels(bmp->Width, bmp->Height, GL_RGBA, GL_UNSIGNED_BYTE, bmp->Data);
Убедитесь, что вы включили и настроили смешивание.
Других решений пока нет …