2010-07-13 6 views
5

Estoy haciendo una aplicación universal basada en OpenGL que debería funcionar en ipod/iphone 2G/3G/3GS/4 y iPad.¿Cómo detectar la resolución de textura máxima en iPhone?

Para entregar los mejores gráficos posibles, necesito cambiar entre diferentes resoluciones de textura en función de qué dispositivo lo esté ejecutando.

Por ejemplo, iPhone 2G necesita texturas que no superen los 1024x1024, mientras que el iPhone 3GS puede manejar texturas más grandes.

Por lo tanto, en el iPhone 3GS quiero cargar un atlas de textura de 2048x2048, mientras que el iPhone 2G obtendrá el atlas de textura reducida de 1024x1024.

¿Existe una manera simple y segura de detectar la resolución de textura máxima disponible para OpenGL en cualquier dispositivo?

Respuesta

9

Sí, utilice glGetIntegerv como:

int maxTextureSize; 
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); 

continuación, puede utilizar como máximo un maxTextureSize x maxTextureSize textura.

+0

Gracias, funciona como un encanto :) – sinsro

+0

Esto no funciona para mí. glGetIntegerv no modifica el valor de maxTextureSize, glError regresa 0. ¿Me falta algo? – louissmr

+0

@louissmr usted necesita configurar el eaglContext: [EAGLContext setCurrentContext: [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2]]; –

Cuestiones relacionadas