Запуск XNA на младшей видеокарте

#graphics #xna #gpu

#графика #xna #Графический процессор

Вопрос:

Я ищу работу с XNA Framework для разработки нескольких простых 2D-игр. Я особенно хотел бы иметь возможность разрабатывать и отлаживать части этих игр на ходу с моим нетбуком. К сожалению, графический процессор моего нетбука не поддерживает шейдерную модель 2.0, которая требуется для XNA.

Разочарованный, я отправился в Google в поисках альтернатив. Я наткнулся на одну альтернативу из «Руководства Riemers XNA». Предполагается, что следующий код заставит XNA работать строго через процессор компьютера, что позволит моему нетбуку запускать невероятно медленную версию XNA.

 if (GraphicsAdapter.DefaultAdapter.GetCapabilities(DeviceType.Hardware).MaxPixelShaderProfile < ShaderProfile.PS_2_0)
            graphics.PreparingDeviceSettings  = new EventHandler<PreparingDeviceSettingsEventArgs> (SetToReference);
     }

     void SetToReference(object sender, PreparingDeviceSettingsEventArgs eventargs)
     {
         eventargs.GraphicsDeviceInformation.CreationOptions = CreateOptions.SoftwareVertexProcessing;
         eventargs.GraphicsDeviceInformation.DeviceType = DeviceType.Reference;
         eventargs.GraphicsDeviceInformation.PresentationParameters.MultiSampleType = MultiSampleType.None;
     }
 

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

Проблема в том, что когда я пытаюсь запустить этот новый проект, я получаю следующие две ошибки:

 Error   1   'XNAReferenceDevice.Game1.LoadGraphicsContent(bool)': no suitable method found to override  c:usersricharddocumentsvisual studio 2010ProjectsWindowsGame1WindowsGame1WindowsGame1Game1.cs  39  33  WindowsGame1

Error   2   'XNAReferenceDevice.Game1.UnloadGraphicsContent(bool)': no suitable method found to override    c:usersricharddocumentsvisual studio 2010ProjectsWindowsGame1WindowsGame1WindowsGame1Game1.cs  46  33  WindowsGame1
 

Эти две ошибки также приводят к появлению синих «волнистых» линий под методами LoadGraphicsContent и UnloadGraphicsContent.

Если бы кто-нибудь мог помочь мне решить эту проблему или указать мне другое направление, это было бы здорово.

Заранее спасибо!

Ответ №1:

Новые версии XNA потеряли некоторую совместимость с прошлыми. Вероятно, вы используете более новую версию фреймворка и XNA, чем учебные пособия Riemers.

Однако учтите, что новый XNA 4.0 поддерживает минимальный пиксельный шейдер 2.0! Это означает, что вы не можете запустить его на низкоуровневых машинах только с pixel shader 1.1 или со слишком медленным pixel shader 2.0.

Предыдущая версия, XNA 3.1, поддерживала минимальный пиксельный шейдер 1.1, вы можете попробовать вернуться к нему с помощью Visual studio 2008 express.

Извините, но поскольку XNA требует хороших машин, я думаю, вам следует найти машину получше, в том числе для создания 2D-графики.

Однако ошибка компилятора не связана с пиксельным шейдером, а, вероятно, связана с версиями XNA и C #.

Комментарии:

1. blogs.msdn.com/b/shawnhar/archive/2010/03/12 / … Кажется, есть какие-то особые правила только для Windows Phone, касающиеся пиксельного шейдера. Может быть, это способ использовать это для дрянных видеоадаптеров.