[Débutant][OpenGL ES] Problème affichage textures

cs_Niicoo Messages postés 1 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 9 juin 2009 - 9 juin 2009 à 11:31
SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011 - 16 juin 2009 à 16:57
Bonjour tout le monde,

Je dois faire un jeu en OpenGL ES (Objective-c) pour IPhone.
Je dois afficher une texture sur un carré (2D).
Ça pas de soucis, j'y arrive sans difficulté.

Mon problème est que sur cette texture, je dois en afficher d'autres..
(Enchainer des textures "route" et "croisement" pour faire un chemin sur une texture "herbe").

Pour mettre la 1er texture j'utilise la code suivant:

- (void) chargerTextures {
    CGImageRef textureImage = [UIImage imageNamed:@"herbe64.jpg"].CGImage;
    if (textureImage == nil) {
        NSLog(@"L'image n'a pas été chargé");
        return;
    }
    
    NSInteger textureWidth = CGImageGetWidth(textureImage);
    NSInteger textureHeight = CGImageGetHeight(textureImage);
    
    // Un peu d'allocation dynamique de mémoire...
    GLubyte *textureData = (GLubyte *) malloc(textureWidth * textureHeight *4); // 4 car RVBA
    
    CGContextRef textureContext = CGBitmapContextCreate(textureData,
                                                        textureWidth,
                                                        textureHeight,
                                                        8, textureWidth * 4,
                                                        CGImageGetColorSpace(textureImage),
                                                        kCGImageAlphaPremultipliedLast);
    
    CGContextDrawImage(textureContext,
                       CGRectMake(0.0, 0.0, (float)textureWidth, (float)textureHeight),
                       textureImage);
    
    CGContextRelease(textureContext);
    
    glGenTextures(3, &textures[0]); // 3, Car il y a 3 textures différentes...
    
    glBindTexture(GL_TEXTURE_2D, textures [0]);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, textureWidth, textureHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureData);
    
    free(textureData);
    
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    
    glEnable(GL_TEXTURE_2D);


Et je définis les carrés comme ceci:

- (void)drawView {

.....

    // Dessin du carré
    glLoadIdentity();
    glColor4f(1.0, 1.0, 1.0, 1.0);
    glTranslatef(0.0, 0.0, -2.0);
    glVertexPointer(3, GL_FLOAT, 0, squareVertices);
    glEnableClientState(GL_VERTEX_ARRAY);
    glTexCoordPointer(2, GL_SHORT, 0, squareTextureCoords);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);     
    glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

....
}


Je pensais utiliser la méthode chargerTextures lorsque je définis mon carré.
Mais je ne sais pas comment mettre en paramètre la texture nécessaire lors de l'appel et surtout quoi mettre dans la fonction chargerTextures pour que celle ci soit utilisable partout.

Je n'ai que 2semaines d'OpenGL ES dans les pieds, et plus que 3semaines de stage. Bien que je lis pas mal de tutos, cours,.. j'ai encore un peu de mal avec certaines notions =/

Merci!
A voir également:

1 réponse

SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011
16 juin 2009 à 16:57
Salut,

quand tu dis je dois faire un jeux pour iPhone, c'est pour ton patron, un prof ?

Cordialement,
Sébastien.
0
Rejoignez-nous