2012-06-17 20 views
28

En mi aplicación iOS (dirigida para iPad), me gustaría usar texturas que no sean de potencia de dos (NPT). Mi consulta GL_VERSION devuelve "OpenGL ES 2.0 APPLE". De acuerdo con la especificación, debe admitir texturas NPT, pero una simple prueba muestra que tengo que cambiar el tamaño de la textura a 2^N antes de que se muestre.Sin potencia de dos texturas en iOS

¿Apple no es compatible con la especificación ES 2.0 completa? ¿Dónde puedo encontrar documentación sobre lo que no es compatible?

Estoy usando Xcode 4.3.2 e iOS 5.1.

Editar:

Una mirada más cercana a la especificación ES 2.0.25 (sección 3.8.2), revela que hay algunas condiciones que deben cumplirse para NPOT para trabajar. Esencialmente si uso la configuración de abajo, yo soy capaz de cargar texturas NPOT:

// use linear filetring 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 
// clamp to edge 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 

¿Debo cerrar esta o responder a mi propia pregunta?

+3

No es necesario cerrar la pregunta, simplemente puede redactar la respuesta y aceptarla. Podría ser potencialmente útil para otra persona un día. – Tim

+0

Recuerdo una misma pregunta y respuesta hace unos días. Este es un tema frecuente. – Luca

Respuesta

24

Como mencioné en mi edición, encontré la solución. NPOT en ES 2.0 requiere que use filtrado lineal y abrazadera al borde. Además, no mipmaps.

+0

También verifique la extensión 'GL_APPLE_texture_2D_limited_npot' para asegurarse de que sea compatible. –

+1

Funciona con GL_NEAREST como filtro min/mag para mí en ios7. GL_CLAMP_TO_EDGE fue el problema. – Martin

+0

@Martin ¿Podría compartir un fragmento sobre cómo dibujar una textura sin poder de dos bajo iOS? Intento hacerlo, pero solo puedo mostrar una imagen en blanco: https://gist.github.com/anonymous/53307d146d3d1a750554 – amb

Cuestiones relacionadas