Как запустить игру XNA с другой программой на C # - PullRequest
4 голосов
/ 02 ноября 2011

Итак, я недавно начал пытаться использовать программу XNA для запуска другой программы XNA.Я использовал обычный метод Process.Start, который отлично работает при открытии Firefox или Media Player.Однако всякий раз, когда я пытаюсь запустить любую программу XNA (я пробовал несколько), я получаю сообщение об ошибке «Не найдено подходящей видеокарты. Невозможно создать графическое устройство. Для этой программы требуется пиксельный шейдер 1.1 и вершинный шейдер 1.1».Я распознаю это как ошибку, когда графическое устройство не может обрабатывать XNA, но здесь проблема не в этом, поскольку я уже запускаю XNA для начала.

Мой код в настоящее время выглядит следующим образом:

System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = Stat.clientfile;
process.StartInfo.Arguments = "";
process.StartInfo.LoadUserProfile = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.WorkingDirectory = Stat.clientfile.Remove(Stat.clientfile.Length - 1 - Stat.clientfile.Split(Convert.ToChar(@"\"))[Stat.clientfile.Split(Convert.ToChar(@"\")).Length - 1].Length);
process.StartInfo.RedirectStandardOutput = true;
Stat.MessageBox(process.StartInfo.WorkingDirectory);
process.Start();

Но это после того, как я попробовал почти каждое добавление к Process.Start(filename).Я использую XNA версии 3.1 на нетбуке Acer, если это что-то значит.

Если кто-нибудь поймет, что с этим не так, ваша помощь будет принята с благодарностью!

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Я столкнулся с той же проблемой. Я нашел эту тему:

http://forums.create.msdn.com/forums/p/94466/566353.aspx

Около дна Кезип говорит: " XNA не позволяла запускать несколько программ, пока одна находилась в полноэкранном режиме ". Вывод обеих программ из полноэкранного режима устранил проблему.

0 голосов
/ 23 ноября 2011

Вы не можете использовать

process.StartInfo.RedirectStandardOutput = true;

с приложениями XNA.

Почему?Приложение XNA попытается создать графическое устройство ВНУТРИ другого процесса XNA таким образом, что приведет к сбою на 100%.

Не перенаправлять вывод, и он будет работать.(Работал для меня в 2 тестовых сценариях с XNA 4.0 - не могу сказать 100%, если то же самое в 3.1)

process.StartInfo.WorkingDirectory = Stat.clientfile.Substring(0, Stat.clientfile.LastIndexOf('\\'));
...