2010-11-10 9 views
0

J'ai essayé de suivre toutes les informations que je pouvais trouver, mais je n'ai pas de chance de trouver la source de mes problèmes de texture et je pourrais vraiment utiliser une main.Android: problèmes de texture OpenGL et glDrawTexfOES

Ce qui suit est un morceau de code dans lequel j'essaie de dessiner 3 morceaux de mon fond en utilisant glDrawTexfOES. Les 3 pièces devraient ressembler à de l'herbe verte.

public void onDrawFrame(GL10 gl) { 

    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 
    gl.glLoadIdentity(); 

    gl.glFrontFace(GL10.GL_CW); 
    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 
    gl.glEnable(GL10.GL_TEXTURE_2D); 

    gl.glBindTexture(GL10.GL_TEXTURE_2D, grass); 

    gl.glColor4x(0x10000, 0x00000, 0x10000, 0x10000); 

    ((GL11Ext) gl).glDrawTexfOES(0.0f, 0.0f, -8.0f, 32, 32); 
    ((GL11Ext) gl).glDrawTexfOES(32.0f, 0.0f, -8.0f, 32, 32); 
    ((GL11Ext) gl).glDrawTexfOES(64.0f, 0.0f, -8.0f, 32, 32); 
} 

au lieu de l'herbe verte cependant, je me fais 3 places marron: http://img109.imageshack.us/img109/9670/84615249.jpg

Toute aide à comprendre pourquoi mes textures ne seront pas affichées correctement serait très appréciée! Sur une note connexe, pour construire un jeu en mosaïque 2D simple, glDrawTexfOES est-il la méthode la plus efficace pour générer l'arrière-plan en mosaïque?

Merci à l'avance, Harry

+0

Sur quel matériel travaillez-vous? Quelle version du pilote? –

+0

Pourquoi le composant vert de votre appel 'glColor4x()' est-il nul? – genpfault

Répondre

0

Si vous google la plupart des fonctions OpenGL vous obtenez la documentation de la fonction, suivi d'exemples. Pour cette fonction, les résultats sont dominés par les personnes ayant des problèmes. Cette fonction peut être légèrement plus rapide que d'utiliser les textures de la manière habituelle (je ne l'ai pas utilisée donc je ne sais pas), mais appliquer simplement une texture à un quad ne nécessite aucune extension et est extrêmement portable. Pourquoi ne pas essayer cela et revenir à nous ... il se pourrait que la fonction fonctionne parfaitement, mais quelque chose s'est mal passé lors de l'initialisation de la texture. L'utilisation de la méthode texture-a-quad simple vous aidera à le découvrir aussi.

+0

Merci Ben. Alors que l'OpenGL d'Android ne semble pas supporter les quads, j'ai réussi à faire fonctionner la texture avec des triangles au moins. – user502656

1

Vous devez définir le mappage de l'image au rectangle Vous obtenez probablement le pixel supérieur gauche de l'image.

int [] crop = {0,0, text_dimx, text_dimy}; ((GL11) gl) .glTexParameteriv (GL10.GL_TEXTURE_2D, GL11Ext.GL_TEXTURE_CROP_RECT_OES, recadrage, 0);