Я работал над очень простой игрой и решил включить в нее несколько базовых текстур. Я экспериментировал с кодом, и по какой-то причине, я понятия не имею почему, я не могу правильно отображать текстуры. Прямо сейчас я просто пытаюсь сопоставить зеленый прямоугольник (файл .png размером 512 x 64) с нижней частью экрана размером 640 x 480. Предполагается, что этот зеленый прямоугольник представляет собой землю. Вот изображение моей неудачной попытки:
Вот соответствующий код:
В созданном мной классе Boot я вызываю эту функцию:
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);
}
В созданном мной наземном классе я вызываю функцию рисования. Текстура загружается в класс Boot и устанавливается как защищенная переменная, которую я привязываю и использую в функции 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();
}
Кроме того, если вы заметили выше, у меня есть вызов GL11.glTranslatef. Я могу получить свою текстуру земли в правильном положении, если просто сделаю 2-й аргумент для этой функции достаточно большим, чтобы сместить его дальше в направлении y, однако я не хочу делать это таким образом. Я действительно не знаю, как текстура вообще оказалась в этом месте, и я хотел бы выяснить, почему.