Делать XNA в Delphi Prism - PullRequest
       33

Делать XNA в Delphi Prism

3 голосов
/ 27 ноября 2008

Я установил 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 ]

4 голосов
/ 28 ноября 2008

Вы можете просто создать проект контента вручную, используя msbuild. Он может не иметь такой же интеграции, где вы можете просто добавить контент и изменить настройки в обозревателе решений ... но это поможет :-)

здесь больше информации об этом: http://blogs.msdn.com/shawnhar/archive/2006/11/07/build-it-ahead-of-time.aspx

2 голосов
/ 09 декабря 2008

Мне, наконец, удалось заставить его работать через 1) сборку "* .contentproj" с MSBuild из командной строки, 2) копирование результирующего каталога "Content" в качестве подкаталога, в который выводится мой исполняемый файл Delphi Prism.

Было бы хорошо, если бы Delphi Prism автоматически распознал * .contentproj и автоматически его собрал.

0 голосов
/ 09 июля 2013

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;
0 голосов
/ 28 ноября 2008

Насколько мне известно, Prism только анонсирована и не выпущена. Следовательно, испытание не является конечным продуктом. Как клиент RO, я ожидаю, что электронная почта будет выпущена, но не раньше, за исключением объявления об этом. Честно говоря, я не знаю, что поддержка XNA завершена или даже работает. Возможно, вы пытаетесь сделать это преждевременно, учитывая, что официальный релиз Prism скоро будет через месяц.

Я не знаю, что вам сказать, чтобы исправить ваши проблемы с XNA, но было бы разумно дождаться самой Prism. Пока не выйдет Prism, я бы считал поддержку XNA «ожидающей».

0 голосов
/ 28 ноября 2008

Я еще ничего не делал в XNA, но вот мое лучшее предположение: -)

Итак, тип Content Project - это подпроект для стандартного проекта XNA, который просто компилирует игровой контент (текстуры, звук и т. Д.) Как вложенный процесс компиляции, правильно?

Так что я бы предположил, что в файле проекта или в файле решения должна быть какая-то ссылка на подпроект, возможно, лучшим способом было бы создать простой проект XMA в C # или VB и посмотреть на сгенерированный мета -файлы (csproj, contentproj и т. д.)

Edit:


О, я предлагаю вам вручную создать файл contentproj и вставить ссылку, как только вы узнаете, как они выглядят, я предполагаю, что VS позволит вам добавить, удалить ваш контент и т. Д.


Тогда остается только вопрос о том, как запускается процесс компиляции конвейера контента XNA, если это не «просто произойдет», что может быть вопросом для Марка Хоффмана и др.

Надеюсь, это немного поможет, просто предположение.

Рад видеть вас в StackOverFlow.

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

...