2012-09-07 12 views
9

Utilizzando XCode 4.4.1 Ho il seguente codice OpenGL:Perché GL_LINEAR_MIPMAP_LINEAR dà un errore 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); 

ho controllare l'errore OpenGL utilizzando questo frammento:

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

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

Il codice OpenGL produce un errore (0x500) - Sono rivolto a iOS 5.0 con OpenGL ES2.0.

Perché è un enum non valido?

+0

https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexParameter.xhtml Questo ha tutte le risposte necessarie – Archmede

risposta

23

Il filtro di ingrandimento GL_TEXTURE_MAG_FILTER non supporta la mappatura mip, in quanto non ha alcun significato per l'ingrandimento della trama. Supporta solo GL_NEAREST e GL_LINEAR. Quindi, solo modificare questa linea per

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
+1

È ancora valida? ** La modalità di filtro GL_LINEAR_MIPMAP_LINEAR fornisce la migliore qualità quando si esegue la texturing ma richiede ulteriori texel da prelevare dalla memoria. ** Da: https://developer.apple.com/Library/ios/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/ Tecniche per il lavoro con la texture Dati/tecniche per il lavoro con la superficie dati.html – aledalgrande

+1

@aledalgrande Ovviamente è ancora valido. È sempre stato valido e rimarrà sempre valido. Potrebbe sembrare un'affermazione audace, ma non lo è, dal momento che come detto il filtro di maginificazione non ha assolutamente alcuna idea di mipmapping. Ovviamente 'GL_LINEAR_MIPMAP_LINEAR' è molto utile, ma non è usato per il filtro di ingrandimento (' GL_TEXTURE_MAG_FILTER'), ma solo per il filtro di minifrazione ('GL_TEXTURE_MIN_FILTER'). Il tuo collegamento sembra non menzionare questa differenza, ma in ogni caso è solo materiale supplementare in ogni caso e non dovrebbe spiegare il texturing nella sua interezza. –

+0

Mi sono appena accorto che stavamo parlando solo del filtro magnetico, dei bonker ... – aledalgrande

Problemi correlati