Кроссплатформенная разработка с GLKit? - PullRequest
6 голосов
/ 02 февраля 2012

Я только что установил текущую версию Xcode 4 и реализовал новый API "GLKit", который также используется в шаблоне OpenGL для iOS.Итак, я хочу разработать кроссплатформенную игру для iOS, Mac и Windows.GLKit кажется шагом назад с точки зрения переносимости, но возможности GLKit (особенно такие, как асинхронная загрузка текстур) являются большими преимуществами ...

Как я могу разработать кросс-платформенную игру с GLKit?Мне нужно было бы написать любой код с графикой дважды, верно?Или есть что-то вроде реализации GLKit для Windows?

Любая идея, обходной путь, советы по разработке кода (как отделить код GLKit от других компонентов?) Приветствуется - спасибо!

1 Ответ

5 голосов
/ 03 февраля 2012

Я не могу думать ни о чем, что делает GLKit, что не может быть заменено не-GLKit кодом. Это может упростить некоторые задачи OpenGL ES 2.0, абстрагируя их от вас, но не делает ничего уникального. Самое близкое к тому, что вы не можете воспроизвести в другом месте (из того, с чем я возился), - это ускоренные матрицы и функции векторной математики, которые он предоставляет, но даже они могут быть заменены небольшим кодом ускорения или NEON.

Хотя я хотел бы использовать GLKit в своих приложениях, я все еще поддерживаю с ними iOS 4.2, в которой GLKit недоступен. В настоящее время я ничего не могу сделать, потому что не могу использовать GLKit, мне просто нужно написать немного больше кода для обработки таких вещей, как обновления представлений, загрузка текстур, математическая математика и т. Д. Существует множество документации и примеров. для этих операций, поэтому вам не нужно беспокоиться о том, чтобы быть самостоятельно, когда дело доходит до их реализации.

У вас будут гораздо большие проблемы, чем у GLKit, при попытке сделать ваш код кросс-платформенным с Mac, и особенно с Windows. Рабочие столы OpenGL и OpenGL ES имеют некоторые различия в своих реализациях, и вам необходимо знать, где можно заменить одну функцию или встроенную переменную другой. CAOpenGLLayer и NSOpenGLView на Mac также отличаются от CAEAGLLayer на iOS, и в целом AppKit отличается от UIKit.

Windows будет еще более сложной задачей для поддержки, потому что вы не сможете использовать ни одну из платформ Cocoa, и, скорее всего, также не Objective-C. Это займет намного больше вашего времени, чем любые различия OpenGL / OpenGL ES.

...