Je travaille sur un jeu très simple, et j'ai décidé d'inclure quelques textures de base. J'expérimentais avec le code, et pour une raison quelconque, je ne sais pas pourquoi, je ne peux pas obtenir les textures pour mapper correctement. En ce moment, je suis simplement en train de mapper un rectangle vert (512 x 64 fichier .png) au fond d'un écran de taille 640 x 480. Ce rectangle vert est censé représenter le sol. Voici une image de ma tentative avortée: LWJGL Confondre Texture Mappages
Voici le code relevent:
Dans la classe Boot j'ai créé, j'appelle cette fonction:
public void initGL() {
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, gameWidth, gameHeight, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
Dans la classe du sol je créé, j'appelle une fonction de tirage. La texture est chargée dans la classe Boot et définie en tant que variable protégée que je lie et utilise dans la fonction ground.draw().
public void draw() {
this.texture.bind();
GL11.glLoadIdentity();
GL11.glTranslatef(0, 0, 0);
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(0, 480 - height);
GL11.glTexCoord2f(1, 0);
GL11.glVertex2f(640, 480 - height);
GL11.glTexCoord2f(1, 1);
GL11.glVertex2f(640, 480);
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(0, 480);
GL11.glEnd();
}
En outre, si vous note ci-dessus, j'ai un appel GL11.glTranslatef. Je peux obtenir ma texture de sol dans la bonne position si je fais simplement le 2ème argument pour cette fonction assez grand pour le déplacer plus loin dans la direction y, mais je ne souhaite pas le faire de cette façon. Je ne sais vraiment pas comment la texture a fini dans cet endroit en premier lieu, et je voudrais comprendre pourquoi.
Alors Quel est le problème? Le quad vert n'a pas la taille que vous avez spécifiée pour vos quatre sommets? –
Le problème est que les sommets I ai dans le deuxième bloc de code indiqué ci-dessus doit (je crois) être cartographie à une région sur le fond de la fenêtre. Le point en haut à gauche est 0, (480 - height), où height est la hauteur de la texture. Le prochain est 640, 480 - hauteur donc cela devrait bien sûr être en haut à droite. Les deux sommets suivants sont clairement les coins inférieur gauche et inférieur droit de la fenêtre. – gratsby