Im пытаясь установить определенную текстуру на объект, openGL ES
это, как я загрузить его:Загрузка файла PNG в 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
файл:
все это я получаю черный объект.
Почему это другое? есть ли какое-либо значение для размеров файла (ширина или высота)? я не «жестко кодировал» любые измерения или параметры, чтобы можно было загружать все изображения.
Важно сказать, что я не получаю никаких ошибок в консоли, и программа работает.
Спасибо за ответ nikolai, я попытался изменить код на ваше предложение, но я снова получаю черный объект. любая идея почему? – Itzik984
@ Itzik984 Вы используете какой-нибудь смешной mipmap-фильтр (кроме ближайшего или линейного)? –
Nikolai, не используется фильтр mipmap ... – Itzik984