我正在尝试将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();
答案 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();
矩阵推送和弹出确保保留先前的矩阵。