Войти
ПрограммированиеФорумГрафика

GDI. Как отображать изображение на экране с правильным порядком байтов?

#0
17:17, 13 июля 2014

Суть такова:
Создаю окно, создаю битмапу с помощью CreateDIBSection с 32битным цветом, получаю из этой битмапы указатель на данные. Копирую изображение по этому адресу и делаю BitBlt, и ВНЕЗАПНО изображение отображается в BRG формате, а не в RGB.
Собственно говоря, можно ли научить винду рисовать в RGB формате?

#1
17:25, 13 июля 2014

Panzerschrek[CN]
В CreateDIBSection можно задать расположение компонент с помощью масок:
http://msdn.microsoft.com/ru-ru/library/windows/desktop/dd183376%… vs.85%29.aspx

If the biCompression member of the BITMAPINFOHEADER is BI_BITFIELDS, the bmiColors member contains three DWORD color masks that specify the red, green, and blue components, respectively, of each pixel. Each DWORD in the bitmap array represents a single pixel.

When the biCompression member is BI_BITFIELDS, bits set in each DWORD mask must be contiguous and should not overlap the bits of another mask. All the bits in the pixel do not need to be used.

#2
17:57, 13 июля 2014

Hardcode
Ок. Вроде заработало. Но помоему это плохой способ, т. к. заметно теперь, что изображение рисуется медленно. Других способов нет чтоли?

#3
18:11, 13 июля 2014

Panzerschrek[CN]
> Других способов нет чтоли?
Можешь преобразовывать свой буффер руками. Написи на асме - будет быстро.

ПрограммированиеФорумГрафика

Тема в архиве.