#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, касающиеся пиксельного шейдера. Может быть, это способ использовать это для дрянных видеоадаптеров.