я только начал изучать основы HLSL с использованием C ++, я следую учебным пособиям в книге, первый базовый шейдер:
float4 VS_Main( float4 pos:POSITION):SV_POSITION
{
return pos;
}
но я получаю много ошибок во время компиляции:
ошибка C2146: синтаксическая ошибка: ‘;’ отсутствует перед идентификатором VS_Main
ошибка C4430: отсутствует указатель типа, предполагается int. Примечание: default-int больше не поддерживается
ошибка C2146: синтаксическая ошибка: ‘)’ отсутствует перед идентификатором ‘pos’
ошибка C2059: синтаксис ошибка выглядит как определение функции, но нет списка формальных параметров.
ошибка C2059: синтаксическая ошибка: ‘{‘
это действительно похоже на то, что компилятор не может обрабатывать HLSL вообще … может быть, VS2012 Express не поддерживает HLSL?
заранее спасибо
это действительно похоже на то, что компилятор не может обрабатывать HLSL вообще … может быть, VS2012 Express не поддерживает HLSL?
Ни один компилятор C ++ не делает. Он не должен обрабатываться компилятором.
Вам нужно превратить его в ресурс и скопировать в каталог bin с помощью сценариев после сборки и загрузить HLSL во время выполнения.
Смотрите также: http://www.directxtutorial.com/Lesson.aspx?lessonid=11-4-5
HLSL не является C ++. Вы должны компилировать шейдеры с помощью компилятора шейдеров, а C ++ — с помощью компилятора C ++ — не смешивайте. Есть два варианта компиляции HLSL.
fxc.exe
который включен в DirectX SDK (документы и использование здесь, в MSDN). Он генерирует файл, который вы должны загрузить во время выполнения некоторыми из описанных способов Вот.Есть плюсы и минусы в каждом из вариантов. Короче говоря, предварительная компиляция во время сборки дает вам некоторый выигрыш во время выполнения, в то время как компиляция во время выполнения более гибкая и удобная на этапе разработки (не нужно помнить, чтобы перекомпилировать ее или использовать сценарии после сборки), но она более ошибочна. склонный. Выбирай сам.
Код выглядит нормально для HLSL. Если вы хотите скомпилировать его из VS2012, установите файл «.fx» для сборки с помощью шейдерного компилятора HLSL. Щелкните правой кнопкой мыши файл, выберите свойства. Затем выберите General и Item Type должен быть установлен на HLSL компилятор.
Если вы действительно хотите создавать шейдеры с использованием C ++, вы можете заглянуть в C ++ AMP, чтобы узнать, подходит ли он вам.