В чем смысл всех этих поверхностных форматов

Я отношусь к новому графическому программированию. В прошлом я написал несколько базовых игр в xna, но я пытаюсь понять, в чем суть всех этих поверхностных форматов. Например, Xna и DDS поддерживают стандартный RGBA (8bpp). Зачем нужно 32 бит /с или даже более странное сочетание бит на канал, такой как Rg32. Не достаточно ли иметь стандартные форматы DXn, RGBA и HDR?

5 голосов | спросил Dave 9 FebruaryEurope/MoscowbWed, 09 Feb 2011 06:11:38 +0300000000amWed, 09 Feb 2011 06:11:38 +030011 2011, 06:11:38

1 ответ


15

Вы думаете, XNA имеет множество форматов поверхности ? Мальчик, вы еще ничего не видели .

Шутя в сторону, я подозреваю, что причина связана с сочетанием совместимости и гибкости с прежней /обратной совместимостью.

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

Но большая причина заключается в гибкости, предоставляемой разработчикам благодаря наличию множества вариантов формата поверхности - это позволяет разработчикам делать такие вещи, как использование как можно большего количества бит для определенного канала или как можно меньше каналов для сценариев, в которых оптимизация пространства является важным соображением. Это позволяет расширять до очень большой битовой ширины, когда потребуются широкие диапазоны цветовых данных (например, для HDR, как вы упомянули). Некоторые форматы существуют для относительно специализированных (но очень распространенных, возможно, критически важных графических операций) задач - формат NormalizedByte2, например, обычно используется в операциях, связанных с привязкой к карте (в документации).

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

Наличие множества форматов также позволяет разработчику связываться с GPU, как будут организованы и используются данные (поэтому формат формата DXGI настолько велик, что он не только включает в себя варианты ширины бита, но и некоторый тип информации, например, будут ли значения подписаны или без знака), что, в свою очередь, может позволить графическому процессору оптимизировать свои макеты буферов для максимальной пропускной способности трубопровода.

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

ответил Josh 9 FebruaryEurope/MoscowbWed, 09 Feb 2011 06:27:55 +0300000000amWed, 09 Feb 2011 06:27:55 +030011 2011, 06:27:55

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

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

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