Как установить параметр bytesPerRow в replaceRegion, когда формат текстуры сжат в металле? - PullRequest
0 голосов
/ 24 мая 2019

Согласно replaceRegion doc : For a compressed pixel format, the stride is the number of bytes from the beginning of one row of blocks to the beginning of the next.

Я до сих пор не знаю, как установить bytesPerRow.Могу ли я получить 'bytesPerRow', учитывая текущий уровень ширины текстуры и формат текстуры?Или есть какой-то общий способ расчета?

Любая помощь будет принята с благодарностью.Спасибо.

1 Ответ

2 голосов
/ 24 мая 2019

Вам нужно знать:

  • Ширина текстуры
  • Размер блока вашего формата (например, DXT1 - 4x4)
  • Байт на блок для вашего формата (например, DXT1 составляет 8 байт на блок).

Тогда формула выглядит примерно так:

int blocksPerRow = (textureWidth + (blockWidth - 1)) / blockWidth;
bytesPerRow = blocksPerRow * bytesPerBlock;

Редактировать: Для PVRTC, не пропустите эту важную заметку от replaceRegion

Этот метод поддерживается, если вы копируете на всю текстуру в формате пикселей PowerVR Texture Compression (PVRTC); в этом случае, bytesPerRow и bytesPerImage должны быть равны 0. Этот метод не поддерживается для копирования в субрегион текстуры, имеющей формат пикселя PVRTC.

...