繁体   English   中英

OpenGL ES纹理全为黑色

[英]OpenGL ES textures are all black

我通过以下方法创建8个纹理:

GLuint textures[8];
glGenTextures(8, textures);
for (int i=0; i<num; i++) {
    NSString *fileName = [NSString stringWithFormat:@"image0%d", i + 1];

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

    size_t kwidth = CGImageGetWidth(spriteImage);
    size_t kheight = CGImageGetHeight(spriteImage);

    GLubyte * spriteData = (GLubyte *) calloc(kwidth*kheight*4, sizeof(GLubyte));

    glBindTexture(GL_TEXTURE_2D, textures[i]);

    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, kwidth, kheight, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);

    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);

    glGenerateMipmap(GL_TEXTURE_2D);
}

但是获得所有黑色纹理:

在此处输入图片说明

我该如何解决?

GLubyte * spriteData = (GLubyte *) calloc(kwidth*kheight*4, sizeof(GLubyte));

创建一个用零填充的GLubyte数组。 由于您从未在任何地方修改spriteData ,因此纹理将填充为黑色的零。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM