Почему мой Texture Quad неправильно позиционируется с glTexCoord2f с использованием LWJGL?

Я собираюсь сделать приключенческую игру в 2D с травой, деревьями и другими вещами, если я смогу сделать это. Моя проблема заключается в том, что, когда я использую glTexCoord2f, чтобы закрепить текстуру на квад, они отделяются друг от друга примерно на 25 пикселей. Предполагается, что эти четырехугольники связаны друг с другом, как любые 2D-игры.

Я загружаю их с SlickUtil и размер текстуры составляет 100x100

Вот мой исходный код для рендеринга квадов и InitGL

public static void Render(){
    example--;
    GL11.glLoadIdentity();
    Color.white.bind();
    system.Game.ground.bind();
    GL11.glTranslatef(example, 0, 0);
    //I used for loop for cloning quad at each side.
    for(int x = 0; x <= width; x++){
        GL11.glBegin(GL11.GL_QUADS);
        GL11.glTexCoord2f(0, 0);
        GL11.glVertex2f(x * 100, 0);
        GL11.glTexCoord2f(1, 0);
        GL11.glVertex2f(x * 100 + 100, 0);
        GL11.glTexCoord2f(1, 1);
        GL11.glVertex2f(x * 100 + 100, 100);
        GL11.glTexCoord2f(0, 1);
        GL11.glVertex2f(x * 100, 100);
        GL11.glEnd();
    }
    GL11.glLoadIdentity();
}

Вот мой код InitGL.

GL11.glEnable(GL11.GL_TEXTURE_2D);              
GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);         

GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

GL11.glViewport(0,0,width,height);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, width, height, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);

1 ответ

SlickUtil читает только текстуры с размерами, равными двум. Причина в том, что только начиная с OpenGL 2.0, OpenGL мог читать текстуры с не степенью двух измерений. Попробуйте загрузить текстуру размером 128 на 128 пикселей. Затем отобразите его с разрешением 100 на 100 пикселей (как вы сделали в своем примере).

Другие вопросы по тегам