LWJGL 2D纹理映射屏幕外

时间:2011-07-22 11:40:46

标签: java opengl lwjgl

我正在尝试将2D图像映射到四边形作为背景图像。图像在屏幕中央绘制,因此最终仅覆盖右上方,其余部分在屏幕外。无论如何我可以翻译或更改TexCoord所以它会从左下角画出来吗?以下是我正在使用的代码。

        background.bind();          
        GL11.glBegin(GL11.GL_QUADS);
             GL11.glTexCoord2f(1,1);
             GL11.glVertex2i(0,0);
             GL11.glTexCoord2f(1,0);
             GL11.glVertex2i(0,600);
             GL11.glTexCoord2f(0,0);
             GL11.glVertex2i(800,600);
             GL11.glTexCoord2f(0,1);
             GL11.glVertex2i(800,0);
        GL11.glEnd();

1 个答案:

答案 0 :(得分:1)

这与纹理无关;如果你把你的纹理拿走了,它会呈现与现在完全相同的效果。

OpenGL不会自然地在窗口坐标中采用顶点。为了允许它这样做,您通常需要设置某种形式的正交投影矩阵,通常使用glOrtho。这看起来像是:

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, width, 0, height, -1.0, 1.0);

glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();

//Render stuff in window coordinates here.

glPopMatrix();

glMatrixMode(GL_PROJECTION);
glPopMatrix();

矩阵推送和弹出确保保留先前的矩阵。