Sto cercando un consiglio prima di entrare troppo nel mio prossimo progetto. Vorrei supportare tutte le varie risoluzioni ora supportate da iOS (retina, iPhone non retina e tutti e 3 gli iPad).Sviluppo per display Retina e non retina OpenGL ES
Qual è il modo più comune in cui gli sviluppatori ottengono questo risultato? Ho visto domande simili poste ma su una natura specifica. Sto cercando il pacchetto completo. IE. Vorrei supportare diversi tipi di caratteri bitmap, immagini, ecc.
L'interruttore specifico del dispositivo o le istruzioni standard?
Grazie per tutto l'aiuto in avanzato.
E
Edit: Ho trovato questo da parte di Apple:
Blockquote Se l'applicazione utilizza OpenGL ES per il rendering, il codice di disegno esistente dovrebbe continuare a funzionare senza alcuna modifica. Se disegnato su uno schermo ad alta risoluzione, tuttavia, il contenuto viene ridimensionato di conseguenza e apparirà più a blocchi. Il motivo dell'aspetto blocky è che il comportamento predefinito della classe CAEAGLLayer, che si utilizza per supportare i renderbuffer OpenGL ES, è lo stesso degli altri oggetti del livello Animazione core. In altre parole, il suo fattore di scala è inizialmente impostato su 1.0, il che fa sì che il compositore Core Animation riduca il contenuto del livello su schermi ad alta risoluzione. Per evitare questo aspetto a blocchi, è necessario aumentare le dimensioni dei renderbuffer OpenGL ES in modo che corrispondano alle dimensioni dello schermo. (Con più pixel, è possibile aumentare la quantità di dettagli forniti per il contenuto.) Poiché l'aggiunta di più pixel ai renderbuffer ha implicazioni sulle prestazioni, tuttavia, è necessario optare esplicitamente per supportare gli schermi ad alta risoluzione.
Blockquote Per abilitare il disegno ad alta risoluzione, è necessario modificare il fattore di scala della vista che si utilizza per presentare il contenuto di OpenGL ES. La modifica della proprietà contentScaleFactor della vista da 1.0 a 2.0 attiva una modifica corrispondente al fattore di scala dell'oggetto CAEAGLLayer sottostante. Il renderbufferStorage: fromDrawable: metodo, che si usa per associare l'oggetto layer ai renderbuffer, calcola la dimensione del renderbuffer moltiplicando i limiti del layer per il suo fattore di scala. Pertanto, il raddoppio del fattore di scala raddoppia la larghezza e l'altezza del renderbuffer risultante, offrendo più pixel per il contenuto. Dopodiché, spetta a te fornire il contenuto per quei pixel aggiuntivi.
Quindi suppongo che la mia domanda aggiornata sia come raddoppiare il fattore di scala sopra descritto?
Edit 2:
Sono quasi ...
Sto usando questo per scalare dentro la mia EAGLView:
// Adjust for retina displays
if ([self respondsToSelector:@selector(setContentScaleFactor:)])
{
self.contentScaleFactor = [[UIScreen mainScreen] scale];
}
L'unico problema che rimane ora è l'origine è in qualche modo incasinato. Le immagini visualizzate ora vengono ridimensionate in base alla risoluzione, ma con una risoluzione maggiore l'immagine inizia nel mezzo dello schermo.
Si prega di aiuto!
Modifica 3: risolto !!!! Stavo vivendo i problemi nel mio orientamento.
È necessario assicurarsi che la traduzione sia aggiornata.Ho usato questo:
glTranslatef(width/2, height /2, 0);
glRotatef(-90, 0, 0, 1);
glTranslatef(-1 * (height/2),-1 * (width/2),0);
Grazie per l'aspetto. Spero che questo aiuti qualcuno.
Hai avuto fortuna con conten impostazione tScale = 2 su iPad3 per supporto retina? http://stackoverflow.com/questions/11276027/where-to-start-with-an-opengl-painter-for-the-retina-display –
Non ho ancora provato i display per retina iPad. Quando lo farò, toccherò di nuovo. –