Обнаружение .png альфа-канала в Windows / D3D - PullRequest
1 голос
/ 01 февраля 2011

Я загружаю текстуру из .png, используя D3DXCreateTextureFromFile ().Как моя программа может узнать, содержит ли файл изображения альфа-канал?

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

Это не так сложно сделать, просто изучив файл.

Файл PNG состоит из:

  • Заголовок файла
  • Один или несколько кусков

Заголовок файла всегда составляет 8 байтов и должен быть пропущен.

Каждый фрагмент начинается с 4 байтов, указывающих его длину, и 4 байтов, указывающих его тип. Первый блок всегда должен быть 13 байтов и иметь тип IHDR. Содержит информацию об изображении.

Десятый байт в заголовке содержит точную информацию, которую вы ищете. Он будет равен 6, если файл PNG - RGBA.

Более подробную информацию можно найти здесь .

1 голос
/ 01 февраля 2011

Позвоните IDirect3DTexture9::GetSurfaceLevel, а затем позвоните IDirect3DSurface9::GetDesc. Член D3DSURFACE_DESC.Format сообщит вам.

...