2012-02-02 7 views
6

Ho appena installato l'attuale versione Xcode 4 e ho realizzato la nuova API "GLKit" che è anche utilizzata nel modello OpenGL per iOS. Quindi, voglio sviluppare un gioco cross-plattform per iOS, Mac & Windows. GLKit sembra un passo indietro in termini di portabilità, ma le funzionalità GLKit (specialmente come il caricamento asincrono delle texture) sono grandi vantaggi ...Sviluppo multipiattaforma con GLKit?

Come posso sviluppare un gioco multipiattaforma con GLKit? Avrei bisogno di scrivere qualsiasi codice grapics due volte, giusto? O c'è qualcosa come un'implementazione GLKit per Windows?

Qualsiasi idea, soluzione alternativa, consulenza sulla progettazione del codice (come dividere il codice GLKit da altri componenti?) È il benvenuto - grazie!

risposta

5

Non riesco a pensare a qualcosa che GLKit fa e che non può essere sostituito dal codice non GLKit. Può rendere più semplici alcune attività di OpenGL ES 2.0 estraendole lontano da te, ma non fa nulla di unico. La cosa più vicina all'essere qualcosa che non si può replicare altrove (da quello con cui ho armeggiato) è la matrice accelerata e le funzioni matematiche vettoriali che fornisce, ma anche quelle potrebbero essere sostituite con un piccolo codice Accelerate o NEON.

Mentre mi piacerebbe utilizzare GLKit all'interno delle mie applicazioni, sto ancora supportando iOS 4.2 con loro, che non ha GLKit disponibile. Non c'è nulla che non possa fare al momento perché non posso usare GLKit, devo solo scrivere un po 'più di codice per gestire cose come aggiornamenti di visualizzazione, caricamenti di texture, matematica matrix, ecc. C'è un sacco di documentazione ed esempi là fuori per queste operazioni, quindi non devi preoccuparti di stare da solo quando si tratta di implementarle.

Avrete problemi molto più grandi di GLKit quando provate a rendere il vostro codice multipiattaforma con il Mac, e specialmente con Windows. Desktop OpenGL e OpenGL ES hanno alcune differenze nelle loro implementazioni e dovrai essere consapevole dei luoghi in cui sostituire una funzione o una variabile incorporata per un'altra. CAOpenGLLayer e NSOpenGLView su Mac sono anche diversi da CAEAGLLayer su iOS e AppKit in generale è un animale diverso da UIKit.

Windows sarà ancora più una sfida da supportare, perché non sarà possibile utilizzare nessuno dei framework Cocoa e molto probabilmente nessun Objective-C. Questo richiederà molto più tempo rispetto a qualsiasi differenza OpenGL/OpenGL ES.