Выполнение 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 ... Есть идеи, как заставить его работать?


person pglowack    schedule 27.11.2008    source источник


Ответы (5)


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

подробнее об этом: http://blogs.msdn.com/shawnhar/archive/2006/11/07/build-it-ahead-of-time.aspx

person Joel Martinez    schedule 28.11.2008
comment
Было бы неплохо получить более подробную информацию о том, как это сделать. Даже этот пост в блоге немного отрывочен - person sav; 09.07.2013

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

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

person pglowack    schedule 09.12.2008

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

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

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

Изменить:


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


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

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

Кстати, рада видеть вас в StackOverFlow.

Rgds Тим Джарвис.

person Tim Jarvis    schedule 27.11.2008

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

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

person Robert K    schedule 27.11.2008

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;
person sav    schedule 09.07.2013