2015-09-26 18 views
0

以下是我的create texture功能:紋理映射沒有一個完整的MIP鏈啓用

- (GLuint)setupTexture:(NSString *)fileName { 

    // 1 
    CGImageRef spriteImage = [UIImage imageNamed:fileName].CGImage; 
    if (!spriteImage) { 
     NSLog(@"Failed to load image %@", fileName); 
     exit(1); 
    } 

    // 2 
    size_t kWidth = CGImageGetWidth(spriteImage); 
    size_t kHeight = CGImageGetHeight(spriteImage); 

    // 3 
    GLubyte * spriteData = (GLubyte *) calloc(kWidth*kHeight*4, sizeof(GLubyte)); 

    // 4 
    GLuint texName; 
    glGenTextures(1, &texName); 
    glBindTexture(GL_TEXTURE_2D, texName); 

    glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA, (int)kWidth, (int)kHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData); 
    glGenerateMipmap(GL_TEXTURE_2D); 

    //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL_APPLE, 0); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 

    glBindTexture(GL_TEXTURE_2D, 0); 

    return texName; 
} 

我使用的XCode GPU捕獲,並找到這樣的錯誤:

enter image description here

我m新的OpenGL,我該如何解決這個問題?非常感謝!

回答

2

查看屏幕截圖中的紋理描述符編號391341552.在單個進程中很少有這麼多紋理。 看起來問題並不在於設置,而是在繪製之前進行紋理綁定。

通常情況下,你成功地建立了您的材質貼圖和頂點數組後,在繪製如下:

glUseProgram(programDescriptor); 
glBindVertexArray(vertexArrayDescriptor); 
glUniform(...); 
glBindTexture(GL_TEXTURE_2D, textureDescriptor); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, verticesQuantity); 

也許你在glBindTexture通過一些指針?