2012-09-07 16 views
9

Usando XCode 4.4.1 Tengo el siguiente código de OpenGL:¿Por qué GL_LINEAR_MIPMAP_LINEAR da un error INVALID_ENUM?

//set the tex params 
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR); 

puedo comprobar el error de OpenGL usando este fragmento:

GLenum err = glGetError();//THIS IS LIKE THIS BECAUSE OF AN EARLIER ERROR 

if (err != GL_NO_ERROR) 
{ 
    NSLog(@"glError: 0x%04X", i, err); 
} 

El código OpenGL produce un error (0x500) - Soy apuntar a iOS 5.0 con OpenGL ES2.0.

¿Por qué es una enumeración no válida?

+0

https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexParameter.xhtml Esto tiene todas las respuestas que necesita – Archmede

Respuesta

23

El filtro de magnificación GL_TEXTURE_MAG_FILTER no es compatible con mip-mapping, ya que esto no tiene ningún significado para la ampliación de la textura. Solo es compatible con GL_NEAREST y GL_LINEAR. Por lo que sólo cambie esta línea a

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
+1

¿Sigue siendo válido? ** El modo de filtro GL_LINEAR_MIPMAP_LINEAR proporciona la mejor calidad al texturizar, pero requiere que se extraigan los texels adicionales de la memoria. ** Desde: https://developer.apple.com/Library/ios/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/ TechniquesForWorkingWithTextureData/TechniquesForWorkingWithTextureData.html – aledalgrande

+1

@aledalgrande Por supuesto, sigue siendo válido. Siempre ha sido válido y siempre será válido. Puede parecer una afirmación audaz, pero no lo es, ya que, como se dijo, el filtro de maginificación no tiene ninguna noción de mipmapping en absoluto. Por supuesto, 'GL_LINEAR_MIPMAP_LINEAR' es muy útil, pero no se usa para el filtro de ampliación (' GL_TEXTURE_MAG_FILTER'), pero solo para el filtro de minificación ('GL_TEXTURE_MIN_FILTER'). Parece que su enlace no menciona esta diferencia, pero de todos modos es realmente solo material suplementario de todos modos y no se supone que explique la texturación en su totalidad. –

+0

Me acabo de dar cuenta de que estamos hablando de solo el filtro magnético, tontos ... – aledalgrande

Cuestiones relacionadas