0

我正在尝试将 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();
4

1 回答 1

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();

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

于 2011-07-22T13:22:17.670 回答