Я установил Delphi Prism и XNA Game Studio 3.0. Мне удалось перевести на Delphi Prism XNA Tutorial 1 «Отображение 3D-модели на экране» (http://msdn.microsoft.com/en-us/library/bb197293.aspx). Проект компилируется нормально, но я не могу загрузить модель. Похоже, что в XNA есть новый тип contentproj, которого нет в Delphi Prism ... Есть идеи, как заставить его работать?
Выполнение XNA в Delphi Prism
Ответы (5)
Вы можете просто вручную создать проект содержимого с помощью msbuild. У него может не быть такой интеграции, когда вы можете просто добавлять контент и изменять настройки в проводнике решений ... но это поможет :-)
подробнее об этом: http://blogs.msdn.com/shawnhar/archive/2006/11/07/build-it-ahead-of-time.aspx
Мне, наконец, удалось заставить его работать с помощью 1) сборки «* .contentproj» с помощью MSBuild из командной строки, 2) копирования полученного каталога «Content» в качестве подкаталога, куда выводится мой исполняемый файл Delphi Prism.
Было бы неплохо, если бы Delphi Prism автоматически распознавала * .contentproj и создавала его автоматически.
Я еще ничего не делал для XNA, но вот мое лучшее предположение :-)
Итак, тип Content Project - это подпроект для стандартного проекта XNA, который просто компилирует игровой контент (текстуры, звук и т. Д.) Как вложенный процесс компиляции, правильно?
Поэтому я предполагаю, что должна быть какая-то ссылка на подпроект либо в файле проекта, либо в файле решения, возможно, лучшим способом было бы создать простой проект XMA на C # или VB и посмотреть на сгенерированные метафайлы ( csproj, contentproj и т. д.)
Изменить:
О, я предлагаю вам вручную создать файл contentproj и вставить ссылку, как только вы узнаете, как они выглядят, я предполагаю, что VS позволит вам добавлять, удалять ваш контент и т. д.
Тогда остается только вопрос о том, как запускается процесс компиляции конвейера контента XNA, если это не «просто происходит», это может быть вопросом для Марка Хоффмана и др.
Надеюсь, это немного поможет, это всего лишь предположение.
Кстати, рада видеть вас в StackOverFlow.
Rgds Тим Джарвис.
Насколько мне известно, Prism только анонсируется, но не выпускается. Следовательно, испытание не является конечным продуктом. Как заказчик RO я ожидаю, что релиз будет по электронной почте, но не раньше, за исключением объявления о нем. Честно говоря, я не знаю, что поддержка XNA завершена или даже работает. Возможно, вам преждевременно пробовать это, учитывая, что до официального выпуска Prism еще почти месяц.
Я не знаю, что вам делать, чтобы решить ваши проблемы с XNA, но было бы разумно дождаться самой Prism. Пока не будет выпущена Prism, я считаю, что поддержка XNA находится в стадии ожидания.
System.reflection может использоваться для получения доступа к внутренней работе XNA для создания файлов xnb.
method Game1.LoadContent;
var
importer : TextureImporter;
texContent : Texture2DContent;
cc : ContentCompiler;
fullPath : String;
fs : FileStream;
args : array[1..7] of System.Object;
begin
spriteBatch := new SpriteBatch(GraphicsDevice);
importer := new TextureImporter;
texContent := importer.Import(’asset.png’, nil) as Texture2DContent;
var compilerType := typeOf(ContentCompiler);
cc := compilerType.GetConstructors(BindingFlags.NonPublic or BindingFlags.Instance)[0].Invoke(nil) as ContentCompiler;
var compileMethod := compilerType.GetMethod("Compile", BindingFlags.NonPublic or BindingFlags.Instance);
fullPath := ‘assestName.xnb’;
fs := File.Create(fullPath);
args[1] := fs;
args[2] := texContent;
args[3] := TargetPlatform.Windows;
args[4] := GraphicsProfile.Reach;
args[5] := true;
args[6] := fullPath;
args[7] := fullPath;
compileMethod.Invoke
(
cc,
args
);
//SpriteTexture := Content.Load(’assetName’);
end;