Получение ошибок OOM с XNA, Multi-Sampling и HD - PullRequest
1 голос
/ 02 апреля 2009

Я реализовал MultiSampling в моей игре XNA, он отлично работает на моем рабочем столе. Когда я запускаю игру в режиме HighDefinition на XBox360, я получаю исключение OOM. Если я не включаю MultiSampling, игра работает нормально, но модели не сглаживаются и выглядят ужасно.

Следующим фрагментом кода кажется виновник.

    void _graphics_PreparingDeviceSettings(object sender, PreparingDeviceSettingsEventArgs e)
    {
        e.GraphicsDeviceInformation.PresentationParameters.MultiSampleType = MultiSampleType.TwoSamples;
    }        

    protected override void Initialize()
    {
        // TODO: Add your initialization logic here
        graphics.PreferMultiSampling = true;
        graphics.PreferredBackBufferHeight = 720;
        graphics.PreferredBackBufferWidth = 1280;
        graphics.PreparingDeviceSettings += _graphics_PreparingDeviceSettings;
        graphics.ApplyChanges();

        base.Initialize();
    }

вызовет исключение OOM.

Моя основная цель - сделать так, чтобы модели выглядели прилично (с сглаживанием), и MultiSampling кажется правильным подходом. Я довольно новичок в этом, так что если кто-то может указать мне правильное направление, я был бы признателен.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2009

Я думаю, что если вы просто переместите код из инициализации в конструктор и удалите вызов graphics.ApplyChanges (...) ваши проблемы должны исчезнуть.

В статье, опубликованной Venesectrix, говорится, что ApplyChanges (...) является своего рода запретом для XBOX360.

Поэтому вам необходимо выполнить все эти настройки GraphicsDevice до того, как устройство будет построено. Это достигается установкой в ​​конструкторе. В этом случае нет необходимости вызывать ApplyChanges ().

К тому времени, когда вызывается Initalize (), устройство уже создано. Вызов ApplyChanges вызывает сброс и снова запускает событие, чтобы подготовить параметры устройства. Если я не ошибаюсь, перезагрузка устройства в отношении XNA не поддерживается на 360 и вызовет ошибку.

Надеюсь, это поможет, дайте мне знать.

-Джефф Б.

1 голос
/ 03 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...