Существует ли (XNA 3.1 "Effect.CompileFromFIle") эквивалент для (XNA 4.0)? - PullRequest
3 голосов
/ 27 декабря 2010

Я создаю .NET 3D Library для игр и инструментов, которые являются кроссплатформенными между D3D9, D3D10, OpenGL и XNA, которые будут работать в Windows, XBOX, Phone7, MacOSX и Linux (возможно, iPhone & Android).

Так что мой вопрос ..., я хочу иметь возможность скомпилировать файл эффектов в XNA 4.0, как вы могли бы в XNA 3.1 ... Извинения Microsoft за то, что они убрали эту функцию, не законны, так как убивают XNA за то, что они используются для создания инструментов для ваших игр (например, редактор эффектов).

Если кто-нибудь знает способ обойти это и может опубликовать некоторый код или указать мне правильное направление, было бы неплохо tnx.

Ответы [ 2 ]

5 голосов
/ 23 января 2011

Эта функция была убрана для обеспечения согласованности между играми для Xbox и Windows. Xbox не может компилировать шейдеры во время выполнения, но в XNA 3.1 методы Effect.CompileFromX были включены в среду выполнения, общую для Xbox и Windows.

Как объяснил Шон Харгривз в своем блоге , есть еще несколько способов компилировать контент эффектов (или любой другой вид контента) во время выполнения, но только в играх Windows.

Лично я нахожу, что четвертый метод, показанный Шоном, прост в реализации и надежен; вы можете импортировать любой тип контента, который вы хотите во время выполнения, и вам не нужно прилагать все усилия для настройки любых проектов MSBuild.

EDIT: До меня дошло, что все методы, перечисленные в ответах на этот пост (по состоянию на 23 января 2011 г. в 14: 50-7UTC), требуют ссылок на некоторые библиотеки XNA Content Pipeline, а это означает, что пользователям может понадобиться установить XNA быть в состоянии использовать ваш продукт ...

4 голосов
/ 27 декабря 2010

Я также разместил этот вопрос в App Hub, где на него был дан ответ.http://forums.create.msdn.com/forums/p/70737/431600.aspx#431600

Ответ на этот вопрос заключается в использовании утилиты командной строки (CompileEffect), которая использует конвейер содержимого для компиляции исходного файла .fx в двоичный двоичный объект, который можно передать непосредственно в XNA Framework.Конструктор класса эффектов.

Вот ссылка для ответа на этот вопрос для всех, кто ищет ... http://create.msdn.com/en-US/education/catalog/sample/stock_effects

РЕДАКТИРОВАТЬ (лучше ссылки): Чтобы скомпилировать шейдеры, нужно посмотреть надокументы для компилятора FX. LINK: https://msdn.microsoft.com/en-us/library/windows/desktop/bb232919(v=vs.85).aspx

LINK2: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509710(v=vs.85).aspx

...