Должен ли я использовать текстуры размером не более 2?

В первые дни OpenGL и DirectX размер текстур должен был быть равен двум. Это означало, что интерполяция значений float может быть выполнена очень быстро, используя сдвиг и т. Д.

Начиная с OpenGL 2.0 (и до этого, через расширение) поддерживаются параметры текстуры без мощности.

У двух текстур есть преимущества производительности на современных интегрированных и дискретных графических процессорах? Какие преимущества имеют текстуры без питания двух?

Имеет ли значительная численность рабочего стола карты, поддерживающие текстуры без силы двух?

39 голосов | спросил Will 31 Jpm1000000pmMon, 31 Jan 2011 22:33:39 +030011 2011, 22:33:39

5 ответов


14

Есть ли преимущества производительности для привязки текстур к двум текстурам на современных интегрированных и дискретных графических процессорах?

Большинство современных графических процессоров поддерживают не-мощность двух (NPOT) текстур и отлично справляются с ними. Снижение производительности довольно мало. Но есть несколько проблем для рассмотрения:

  • При использовании текстуры NPOT это занимает больше места в ОЗУ, подобно текстуре POT следующего размера. Технически вы просто теряете пространство, которое можно было бы использовать, чтобы что-то там положить;

  • Тексты NPOT могут обрабатываться заметно медленнее (в OpenGL 2.1 у меня было падение производительности до 30%) по сравнению с POT следующего размера;

  • Старые графические процессоры и встроенные /встроенные графические процессоры не настолько продвинуты, они часто поддерживают текстуры NPOT, но поддержка довольно медленная и неуклюжая;

  • Даже более старые графические процессоры могут вообще отказаться от отображения /отображения текстур NPOT;

  • Могут быть артефакты обрезки, вызванные интерполяцией mip-map, у вашей текстуры 25x25 может быть черная рамка, в которой пиксели добавлены к размеру 32x32.

P.S. Я не знаю точно о мобильных устройствах, могут быть еще больше ограничений в отношении текстур POT.

Какие преимущества имеют текстуры без силы двух, если они есть?

Насколько я знаю, есть только 2 преимущества:

  • Они занимают меньше места на жестком диске, если они не упакованы (когда упакованные пустые области дают очень малое добавление)
  • Вы можете сэкономить время при записи NPOT -> POT конвертер. Вам понадобится один для выпуска версии, но использование текстур NPOT для проектирования и прототипирования интерфейса /моделей просто отлично.

Существуют ли большие группы пользователей настольных компьютеров, у которых нет карт, которые поддерживают текстуры без энергии?

Насколько я знаю и тестировал на ПК - Да. Это включает в себя значительный процент графических процессоров с быстрым ходом /незначительными ошибками и небольшой процент карт, которые вообще не будут обрабатывать NPOT.

ответил Kromster 1 FebruaryEurope/MoscowbTue, 01 Feb 2011 09:57:20 +0300000000amTue, 01 Feb 2011 09:57:20 +030011 2011, 09:57:20
5

Одно распространенное использование текстур без энергии двух - для «размер экрана» или «размер экрана с половинным экраном» (и т. д.) - рендеринг целевых текстур, используемых для эффектов постпроцессинга.

В этих случаях mipmaps не нужны, буфер всегда несжатый, поэтому нечетные размеры текстур вызывают здесь меньше проблем.

ответил bluescrn 1 FebruaryEurope/MoscowbTue, 01 Feb 2011 02:06:42 +0300000000amTue, 01 Feb 2011 02:06:42 +030011 2011, 02:06:42
3

Существовали ограничения для текстур NPOT на более старых аппаратных средствах. Как упоминалось на этой вики-странице OpenGL , некоторые старые аппаратные средства требуют, чтобы NPOTs не имели mipmaps, сжатые текстуры требуют выравнивания 4x4 пикселей, но новое оборудование должно отлично справляться с этим.

По моему опыту, некоторые даже относительно новые аппаратные средства влияют на большую производительность, если вы используете текстуры NPOT вместо POT. Я не знаю, в чем проблема; возможно, что в некоторой комбинации состояний рендеринга рендеринг фактически выполняется в программном обеспечении. Поэтому, если у вас нет веских причин, я бы рекомендовал по-прежнему пытаться использовать POT как можно больше.

Что касается использования NPOT вместо POT - если у вас есть изображения с размерами NPOT, скажем, например, 1600x1200, использование поверхности размером 2048x2048 будет тратить много видеопамяти.

ответил Jari Komppa 31 Jpm1000000pmMon, 31 Jan 2011 23:16:38 +030011 2011, 23:16:38
-1

мощность 2-х текстур повышает производительность около 30% для любого типа графических процессоров не только для старых графических процессоров (на 30% быстрее разница между высокопроизводительным графическим процессором и средним) они берут на 30% больше бара, но требуется меньше vram они повышают качество, обеспечивая необходимый размер текстуры для определенного расстояния, он работает как сглаживание текстур артефакт темной линии должен обрабатываться игровыми движками, а ааа-двигатели отлично справляются с ними

ответил yusef ghatavi 28 J000000Tuesday15 2015, 20:37:27
-3

Мой художник-программист имеет только правильный размер.

Это, безусловно, упрощает мою логику отображения, чтобы знать, что если я хочу установить текстуру в верхнем левом углу экрана, я могу просто установить 0,0 в верхнем левом углу текстуры и увидеть all текстура там в правильном месте, тогда как если бы мне пришлось добавить дополнение 0alpha, расположение текстуры против края экрана было бы более сложным. Плюс, конечно, что 0alpha все еще должна быть альфа-смесь, и если я смотрю на непрозрачные текстуры, я могу предпочесть не иметь альфа-канал.

ответил DeadMG 1 FebruaryEurope/MoscowbTue, 01 Feb 2011 01:39:41 +0300000000amTue, 01 Feb 2011 01:39:41 +030011 2011, 01:39:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132