Я пытаюсь создать пиксельный шейдер в библиотеке классов С#.
Я добавил файл fx в проект. Поскольку я не могу найти подходящего действия по сборке, я попытался вручную отредактировать csproj:
<FxCompile Include="MyEffect.fx">
<ShaderType>Pixel</ShaderType>
</FxCompile>
но когда я пытаюсь найти файл ps, я получаю System.IO.IOException: Cannot locate resource 'MyEffect.ps'
вот код который выдает ошибку:
public class MyEffect : ShaderEffect
{
public MyEffect(){
this.PixesShader = new Uri("pack://application:,,,/WpfControlLibrary1;component/MyEffect.ps");
}
}
Как настроить мой проект, чтобы я мог найти скомпилированный шейдер?
Все учебники, которые я нашел, предназначены для проектов C++ или посвящены старым инструментам, таким как пользовательская задача сборки, но я думаю, что это не требуется с VS2012.
EDIT: Visual Studio компилирует файлы .fx только в проектах C++. В проектах C# это не работает. Здесь упоминается: http://blogs.msdn.com/b/chuckw/archive/2012/05/07/hlsl-fxc-and-d3dcompile.aspx
Build Action
, оно должно бытьResource
. Похоже, вы отредактировали его для использования компиляции, что, конечно, не сработает. Вам не следует редактировать файл проекта напрямую, если вы полностью не понимаете, что делаете. Ваш код выглядит нормально, я думаю, проблема только в том, чтоBuild Action
установлено наCompile
, что неверно. - person Hopeless   schedule 08.10.2015FxCompile
, а неCompile
. Я заметилFxCompile
в некоторых проектах cpp. Действие сборкиResource
не работает, потому что файл .fx должен быть сначала скомпилирован в файл .ps, а затем добавлен в ресурсы. Обратите внимание, что имя ресурсаMyEffect.ps
, а неMyEffect.fx
. - person Liero   schedule 08.10.2015Build Action
вResource
, это файл.ps
. Кстати, я даже написал простую библиотеку, содержащую только пользовательские эффекты, и я точно знаю, что в.ps
файлахBuild Action
должно быть установлено наResource
. То, что вы сделали с файлом csproject, следует откатить (чтобы убедиться, что это не повлияет на то, что вы будете делать дальше). Если возможно, попробуйте снова создать новый проект. - person Hopeless   schedule 08.10.2015Shazzam
(поддерживает редактор HLSL и предварительный просмотр). Итак, вы хотите, чтобы VS скомпилировал исходный код HLSL? Насколько я знаю, VS 2012 не может этого сделать, не уверен в более новых версиях. Или, может быть, он поставляется с каким-то плагином, помогающим сделать это. - person Hopeless   schedule 08.10.2015