2010-11-12 3 views
3

меня попросили исследовать портирования 10-летний Direct X (v7-9) игры для OpenGL ES, первоначально для iPhoneпортирование DirectX на OpenGL ES (iPhone)

Я никогда не предпринял игровой порт, как это прежде (и будет нанимать кого-то, чтобы сделать это), но я хотел бы понять этот процесс.

  1. Есть ли какие-либо ресурсы/книги/блоги, которые помогут мне в понимании процесса?
  2. Есть ли такие проекты, как Mono, которые могут это сделать?
+0

Эти компьютерные игры для настольного компьютера, которые вы хотите перенести на мобильное устройство? Насколько интенсивны графики, я предполагаю, что они 3D, ожидаемая частота обновления 30 кадров в секунду?Используете ли вы DirectX9? –

+0

Да, это настольные игры с 3D, но ничего особенного они все 10 лет и довольно упрощены. – rjstelling

ответ

6

TBH Работа по переносу, подобная этой, задействована, но довольно проста.

Прежде чем начать, заменив все на DirectX звонки с «заглушек» (то есть пустые функции). Вы делаете это, пока не сможете скомпилировать программное обеспечение. После того, как он скомпилирован, вы начнете реализацию всех функций заглушки. На пути будет много ошибок, но это стоит того.

Если вам нужен порт и поддержка телефонов перед iPhone 3GS вы имеете более сложную задачу, поскольку оборудование поддерживает только GLES 1, который с фиксированной функцией только. Вам придется как-то «подражать» этим шейдерам. На мобильных платформах я написал в прошлом код ассемблера, который выполняет «вершинное затенение» непосредственно на данных вершин. Пиксельное затенение часто более сложное, но вы можете обычно предоставлять достаточную информацию через «вершинную затенение», чтобы добиться этого. Некоторые графические функции, которые вы можете просто потерять.

В более поздних версиях iPhone используется GLES 2, так что у вас есть доступ к GLSL ... ATI написал, и у Aras P славы Unity3D было расширено программное обеспечение, которое будет порт HLSL code to GLSL.

После того, как вы сделали все это вы получите на этапе оптимизации. Вероятно, вы обнаружите, что ваш первый проход не очень эффективен. Это совершенно нормально. На этом этапе вы можете посмотреть код с более высокого уровня и посмотреть, как вы можете перемещать код и делать что-то по-другому, чтобы получить лучшую производительность.

В итоге: Ваш первый шаг будет получить код для компиляции без DirectX. Следующим шагом будет фактический перенос вызовов DirectX на вызовы OpenGL ES. Наконец, вы захотите реорганизовать оставшийся код для лучшей производительности.

(P.S: Я был бы рад сделать портирование работы за вас связаться со мной через мою страницу щий профиль;).).

0

Не полный ответ, но в надежде помочь немного ...

Я не знаю ничего таргетирования OpenGL ES специально, но Cadega, сидр и VirtualBox - среди прочего - обеспечить перевод вызовов DirectX для вызовов OpenGL, а OpenGL ES - это, в общем, OpenGL с множеством очень редко используемых битов, а некоторые более медленные и избыточные части удалены. Поэтому, вероятно, стоило бы хотя бы расследовать эти продукты; по крайней мере VirtualBox является открытым исходным кодом.

SGX часть в iPhone 3GS, начиная с полностью программируемым конвейером, что делает его эквивалент DirectX 10 части, поэтому аппаратное обеспечение есть. Старая MBX - это фиксированный конвейер с расширением dot3, но нет кубических карт и только две текстурные единицы. Он также имеет расширение матрицы палитры, поэтому вы можете делать хорошую анимацию и довольно хорошее освещение, если допустимо несколько проходов.

Смежные вопросы