Можем ли мы использовать png вместо bitmap в GDI для bitblt? - PullRequest
0 голосов
/ 04 мая 2010
HDC hdcMem = CreateCompatibleDC(hdc);
HBITMAP hbmOld = SelectObject(hdcMem, g_hbmBall);
GetObject(g_hbmBall, sizeof(bm), &bm);
BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);

Я обнаружил, что во многих играх для отображения анимации используется растровое изображение. Но можем ли мы вместо этого использовать png?

Поскольку растровое изображение довольно большое, когда я конвертирую fron png (1kb -> 12kb в растровом изображении)

Спасибо за чтение этого:)

Ответы [ 2 ]

2 голосов
/ 04 мая 2010

Нет, вы не можете BitBlt с PNG.BitBlt (что, кстати, означает «передача битовых блоков») очень быстро, но в основном это простая процедура копирования памяти.Поэтому единственный способ BitBlt любого формата изображения, кроме несжатого растрового изображения, - сначала преобразовать этот формат в растровое изображение.

Кстати, приложения обычно используют растровые изображения для анимации, потому что выне хотите увеличивать общее время рендеринга кадров, каждый раз распаковывая спрайтовые изображения.Растровые изображения - это всего лишь пример общего кеширования в памяти для повышения производительности.

1 голос
/ 04 мая 2010

Нет, я так не думаю, но GDI + поддерживает PNG среди нескольких других форматов.

...