2015-10-21 4 views
2

Я прочитал этот учебник DirectX 11 по VS2015 (http://www.rastertek.com/dx11s2tut04.html) и выяснил, что автор компилирует шейдеры вершин и пикселов отдельно, используя файл .vs и .ps-файл соответственно.Какой формат шейдерного файла следует использовать в HLSL?

И я также узнал, что в книге «Программирование 3D-игр с DirectX 11» автор использует файл .fx для организации шейдеров по всей книге.

Какой метод я должен использовать для разработки моей программы direct3D с последней версией Windows SDK, интересно? Поскольку я слышал, что структура Effects11 может быть устаревшей в будущем.

+1

См. [Эту тему] (https://fx11.codeplex.com/discussions/450240) для обсуждения эффектов 11 'status' –

ответ

1

Вам следует избегать использования целевых объектов для новых проектов fx и вместо этого выбирать компиляцию на этапе. Обратите внимание, что это не зависит от того, действительно ли вы используете свой шейдерный код в отдельных файлах, хотя наличие одного .vs или .ps в шейдере является общим соглашением. Полная поддержка профилей эффектов D3D11 (т. Е. fx_5_0) уже устарела в последнем (Windows 10) компиляторе и вообще нет fx_5_1 (некоторые функции требуют шейдерной модели 5.1).

+0

Что вы подразумеваете под компиляцией на сцену? Не загружать предварительно скомпилированные файлы эффектов и компилироваться во время выполнения? –

+0

@StefanAgartsson Per-stage компиляция как при компиляции '? S_5_ [0/1]', где '?' Является одним из 'v'ertex,' p'ixel, 'g'eometry,' h'ull, 'd' omain или 'c'ompute. Это контрастирует с профилем 'fx', который используется для инкапсуляции комбинации нескольких ступеней шейдера в качестве * метода *. Компиляция должна выполняться в автономном режиме во время сборки. – MooseBoys

+0

, т. Е. Всегда компилировать .fx во время сборки? Я действительно не знаю, кроме того .fx включает в себя все шейдеры, в то время как .vs или .ps описывает один шейдер, какая разница между этими двумя? – voidRyan