Делаем 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, кстати.

Ргдс Тим Джарвис.

Другие вопросы по тегам