Ошибка пользовательских шейдеров Windows Phone? - PullRequest
3 голосов
/ 26 октября 2011

В Windows Phone XNA 4.0 при компиляции появляется следующая ошибка: платформа Windows Phone не поддерживает пользовательские шейдеры .

Это действительно раздражает, потому что у меня есть версия проекта для Xbox 360, а также версия проекта для Windows.

Я пытался использовать компиляцию на основе #if !WINDOWS_PHONE и #endif, но безуспешно. Кажется, что он игнорирует это.

Как я могу сделать этот файл исключенным или проигнорированным при компиляции в проекте Windows Phone?

Ответы [ 3 ]

2 голосов
/ 30 октября 2011

Пользовательские шейдеры для игр XNA на Windows Phone 7 не поддерживаются, но я не знаю ни о каких возможностях SilverLight.

Однако в XNA можно использовать несколько встроенных эффектов:

• SkinnedEffect

• EnvironmentMapEffect

• DualTextureEffect

• AlphaTestEffect

Игры, ориентированные на профиль XNA Reach, будут кроссплатформенными, поскольку профиль Reach содержит элементы, которые являются общими для всех реализаций XNA. Чтобы использовать более продвинутые параметры, необходимо указать профиль Hi-Def. Но Hi-Def не совместим с Windows Phone.

2 голосов
/ 31 октября 2011

В качестве обходного пути вы можете:

  • Создание отдельных проектов игр и контента для WP7 и Xbox
  • Ручное переключение «Build Action» с «Compile» на «None» в WP7 (только для мазохистов)
  • Поскольку действия по созданию ресурса определены в файле .contentproj, вы можете иметь 2 его версии или написать сценарий, который его модифицирует (и сценарий, вероятно, может быть запущен как часть процесса компиляции автоматически)

Поскольку вам также может понадобиться использовать меньшие текстуры и т. Д. В WP7, чем в Xbox, я просто создаю отдельные проекты игр и контента для WP7 и Xbox и перемещаю общий код игры в библиотеку.

О, и скажите мне, если вы придумали, как выбрать другой контент-проект, например, на основе конфигурации решения, чтобы отдельный игровой проект не требовался:)

0 голосов
/ 26 октября 2011

Просто предположение, но вы можете использовать #ifndef WINDOWS_PHONE вместо?

...