Je crée un jeu iPhone et j'ai besoin de charger une image à partir d'un fichier PNG dans OpenGL (et la lier comme une texture). J'utilise la fonction glTexImage2D pour atteindre cet objectif.Chargement de l'image dans OpenGL ES à partir du code C++ dans l'iPhone
Je sais comment charger une image dans OpenGL en utilisant UIImage (en le convertissant en CGImage et en dessinant ensuite dans un contexte). Comment puis-je appeler mon code Objective-C à partir du code C++ (je code dans le fichier .mm)?
Voici le code que je utilise et qui travaillerait en Objective-C:
NSString *path = [[NSBundle mainBundle] pathForResource:@"texture" ofType:@"png"];
NSData *texData = [[NSData alloc] initWithContentsOfFile:path];
UIImage *image = [[UIImage alloc] initWithData:texData];
if (image == nil)
NSLog(@"Do real error checking here");
GLuint width = CGImageGetWidth(image.CGImage);
GLuint height = CGImageGetHeight(image.CGImage);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
void *imageData = malloc(height * width * 4);
CGContextRef context = CGBitmapContextCreate(imageData, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextClearRect(context, CGRectMake(0, 0, width, height));
CGContextTranslateCTM(context, 0, 0);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), image.CGImage);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData);
CGContextRelease(context);
free(imageData);
[image release];
[texData release];
Est-il possible d'appeler les fonctions de base et l'interface utilisateur graphique à partir du code C++? Quels fichiers dois-je inclure?
Merci d'avance.
Ou, faites un clic droit sur le groupe de cadres et choisissez « Ajouter cadre existant », puis choisissez Cœur graphique de la liste. –