为什么我的Texture Quad使用LWJGL使用glTexCoord2f错误定位?

时间:2014-10-08 17:26:46

标签: opengl 2d 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 个答案:

答案 0 :(得分:0)

SlickUtil仅读取尺寸为2的纹理。原因是,只有自OpenGL 2.0以来,OpenGL才能读取非二维幂的纹理。尝试加载尺寸为128 x 128像素的纹理。然后用100 x 100像素显示它(就像你在例子中所做的那样)。