2010-07-13 7 views
5

Ich mache eine universelle OpenGL-basierte App, die auf iPod/iPhone 2G/3G/3GS/4 und iPad funktionieren sollte.Wie erkennt man die maximale Texturauflösung auf dem iPhone?

Um die bestmöglichen Grafiken zu liefern, muss ich je nach dem, auf dem das Gerät läuft, zwischen verschiedenen Texturauflösungen wechseln.

Zum Beispiel benötigt das iPhone 2G Texturen, die nicht größer als 1024x1024 sind, während das iPhone 3GS mit größeren Texturen umgehen kann.

Also, auf iPhone 3GS möchte ich einen Texturatlas laden, der 2048x2048 ist, während iPhone 2G den herunterskalierten 1024x1024 Texturatlas bekommt.

Gibt es eine einfache und sichere Methode, um die maximale Texturauflösung zu ermitteln, die openGL auf einem dieser Geräte zur Verfügung steht?

Antwort

9

Ja, verwenden Sie glGetIntegerv wie:

int maxTextureSize; 
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); 

Dann können Sie höchstens ein maxTextureSize x maxTextureSize Textur verwenden.

+0

Danke, funktioniert wie ein Charme :) – sinsro

+0

Dies funktioniert nicht für mich. glGetIntegerv ändert den Wert von maxTextureSize nicht, glError gibt 0 zurück. Fehle ich etwas? – louissmr

+0

@louissmr müssen Sie den eaglContext setzen: [EAGLContext setCurrentContext: [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2]]; –

Verwandte Themen