Делаем XNA в Delphi Prism
Я установил 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... Есть идеи, как заставить его работать?
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 и автоматически его собирал.
Насколько мне известно, 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;
Я еще ничего не делал в XNA, но вот мое лучшее предположение:-)
Итак, тип Content Project - это подпроект для стандартного проекта XNA, который просто компилирует игровой контент (текстуры, звук и т. Д.) Как вложенный процесс компиляции, правильно?
Так что я бы предположил, что в файле проекта или в файле решения должна быть какая-то ссылка на подпроект, возможно, лучшим способом было бы создать простой проект XMA в C# или VB и посмотреть на сгенерированные метафайлы (csproj, contentproj и т. д.)
Редактировать:
О, я предлагаю вам вручную создать файл contentproj и вставить ссылку, как только вы узнаете, как они выглядят, я предполагаю, что VS позволит вам добавить, удалить ваш контент и т. Д.
Тогда это просто оставляет вопрос о том, как запускается процесс компиляции конвейера контента XNA, если это не "просто происходит", что может быть вопросом для Марка Хоффмана и др.
Надеюсь, это немного поможет, это всего лишь предположение.
Рад видеть вас в StackOverFlow, кстати.
Ргдс Тим Джарвис.