Можно ли использовать нестандартные размеры mipmap? - PullRequest
2 голосов
/ 11 октября 2010

В настоящее время я работаю над реализацией виртуальной текстуры.Уровни mipmap используются в качестве структуры управления уровнем детализации.(Каждый тексель в виртуальной текстуре относится к блоку данных в «реальной» текстуре.)

Данные существуют на нескольких уровнях детализации, что приводит к разному количеству блоков в виртуальной текстуре.

Пример:

level       size of data       number of blocks
0           60                 4
1           30                 2
2           15                 1

Моя идея состояла в том, чтобы вызывать glTexImage для каждого уровня детализации в виртуальной текстуре для создания различных уровней mipmap.

Проблема заключается в том, что при создании не возникает ошибокили обновление / загрузка я не могу получить какие-либо данные из текстуры.Создание только базового уровня и вызов glGenerateMipmap работает нормально, но приводит к неправильным размерам для некоторых базовых размеров.(технически они верны, но не в моем случае)

Я где-то читал, что размеры уровня mipmap должны делиться на два (или на два и этаж).

Вопросы:

  • Можно ли загрузить «пользовательские» уровни mipmap?
  • Существуют ли ограничения на размеры уровней mipmap?

Ответы [ 2 ]

5 голосов
/ 11 октября 2010

Вы можете загружать пользовательские уровни mipmap, но не можете выбирать их размеры.OpenGL указывает размеры MipMap для ожидаемых уровней и не допускает отклонения от него.

Если взять в качестве ширины ширину, для уровня mipmap i требуется ширина max(1, floor(w_b / 2^i)), где w_b - ширина первогомип уровень (база).То же самое относится и к остальным измерениям (GL spec 2.1, раздел 3.8.8, mipmapping параграфа).

0 голосов
/ 11 октября 2010

Убедитесь, что вы загрузили уровни mipmap до 1x1.Смотрите здесь .

...