2009-08-04 9 views
1

Je suis nouveau dans OpenGL ES. J'ai déjà développé des jeux en cacao avec objectif-c. Maintenant, je veux développer un jeu 3D pour iPhone en utilisant OpenGL ES. Je suis au stade débutant. Je suis capable de créer un triangle, un carré, un cube, une pyramide en utilisant OpenGL ES. Mais si nous avons une image .png avec nous et que nous devons la rendre dans notre jeu, alors qu'est-ce que nous devons faire? Pour cela, nous avons besoin de tout autre outil comme l'unité ou quoi? Je ne peux pas le comprendre exactement. ou nous devons le faire comme l'exemple GLSprite qui est donné sur le site apple.developer.com. Dans cet exemple, ils dessinent un pot de thé en utilisant un fichier teapot.h. Le fichier teapot.h contient des points et en utilisant ces points, ils tracent un triangle qui forme un pot de thé. Donc, est-ce un moyen de dessiner une image. Je pense que je pense dans la mauvaise direction alors s'il vous plaît me guider pour cela.Comment rendre une image avec OpenGL ES?

Nous vous remercions à l'avance

Répondre

4

Pour dessiner une image que vous devez d'abord définir la géométrie que l'image peut être appliquée à:

float w = width/2; 
float h = height/2; 

float x = 10.0f; 
float y = 10.0f; 
float z = 0.0f; 

float scaleX = 1.0f; 
float scaleY = 1.0f; 
float scaleZ = 1.0f; 

const GLfloat squareVertices[] = { 
    -w, -h, 
    w, -h, 
    -w, h, 
    w, h, 
}; 

const GLfloat textureCoords[] = { 
    0, 0, 
    1, 0, 
    0, 1, 
    1, 1, 
}; 

Ensuite, vous pouvez appliquer votre texture et de rendre cette géométrie:

glEnable(GL_TEXTURE_2D); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glEnableClientState(GL_VERTEX_ARRAY); 

// apply texture -- how to create and bind a physical image is a whole different question 
glBindTexture(GL_TEXTURE_2D, yourTextureID); 

glVertexPointer(2, GL_FLOAT, 0, squareVertices); 
glTexCoordPointer(2, GL_FLOAT, 0, textureCoords); 

glPushMatrix(); 
    glTranslatef(x, y, z); 
    glScalef(scaleX, scaleY, scaleZ); 
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 
glPopMatrix(); 

glDisable(GL_TEXTURE_2D); 
glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
glDisableClientState(GL_VERTEX_ARRAY); 

Notez que ces extraits de code supposent que vous avez configuré une vue/projection fonctionnelle.

+0

pouvons-nous rendre l'image sans utiliser la texture? – onmyway133

0

L'échantillon de Crash Landing qui était autrefois dans le SDK est aussi un bon endroit pour commencer (apparemment le code audio a été cassé et c'est la raison pour laquelle il a été supprimé, mais le code OpenGL est toujours bon)

Vous pouvez trouver un lien vers l'échantillon here.

Questions connexes