【发布时间】:2014-02-28 17:00:01
【问题描述】:
我正在尝试为openGL ES 上的对象设置某种纹理,这就是我加载它的方式:
- (GLuint)setupTexture:(NSString *)fileName {
// 1
CGImageRef spriteImage = [UIImage imageNamed:fileName].CGImage;
if (!spriteImage) {
NSLog(@"Failed to load image %@", fileName);
exit(1);
}
size_t width = CGImageGetWidth(spriteImage);
size_t height = CGImageGetHeight(spriteImage);
GLubyte * spriteData = (GLubyte *) calloc(width*height*4, sizeof(GLubyte));
CGContextRef spriteContext = CGBitmapContextCreate(spriteData, width, height, 8, width*4,
CGImageGetColorSpace(spriteImage), kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGContextDrawImage(spriteContext, CGRectMake(0, 0, width, height), spriteImage);
CGContextRelease(spriteContext);
...
}
现在,当我使用这个tile_floor.png 文件时:
图像已加载并在屏幕上绘制。
但是当我使用这个wood.png 文件时:
我得到的只是一个黑色物体。
为什么不一样?文件尺寸(宽度或高度)是否重要?我没有“硬编码”任何尺寸或参数,以便可以加载所有图像。
重要的是要说我在控制台中没有收到任何错误,并且程序正在运行。
【问题讨论】: