2010-07-13 6 views
5

Je crée une application universelle basée sur OpenGL qui devrait fonctionner sur ipod/iphone 2G/3G/3GS/4 et iPad.Comment détecter la résolution maximale de la texture sur iPhone?

Pour fournir les meilleurs graphiques possibles, j'ai besoin de basculer entre différentes résolutions de texture en fonction du périphérique qui l'exécute. Par exemple, l'iPhone 2G a besoin de textures dont la taille ne dépasse pas 1024 x 1024, tandis que l'iPhone 3GS peut gérer des textures plus grandes. Donc, sur iPhone 3GS, je veux charger un atlas de texture de 2048x2048, alors que l'iPhone 2G recevra l'atlas de texture 1024x1024.

Existe-t-il un moyen simple et sûr de détecter la résolution de texture maximale disponible pour openGL sur un périphérique?

Répondre

9

Oui, utiliser glGetIntegerv comme:

int maxTextureSize; 
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); 

Ensuite, vous pouvez utiliser au plus une texture maxTextureSize x maxTextureSize.

+0

Merci, fonctionne comme un charme :) – sinsro

+0

Cela ne fonctionne pas pour moi. glGetIntegerv ne modifie pas la valeur de maxTextureSize, glError retourne 0. Ai-je raté quelque chose? – louissmr

+0

@louissmr vous devez définir eaglContext: [EAGLContext setCurrentContext: [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2]]; –

Questions connexes