以下代码会生成以下图像。我用于背景的图像是640 x 480,与displayMode一样。纹理背景是一个.bmp文件,并加载了Slick纹理加载器。我很困惑,为什么它没有填满四边形,为什么它被反映出来。 编辑:我的OpenGL场景的背景是粉红色,你看到的黑色是从创建的四。背景图像是绿色块,其上贴有2px浅蓝色边框,并贴有“test”字样。在OpenGL中使用Ortho2D绘制四边形问题的纹理问题
private void renderBackground(){
float w = displayMode.getHeight()/2;
float h = displayMode.getWidth()/2;
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPushMatrix();
GL11.glLoadIdentity();
GLU.gluOrtho2D(-w, w, -h, h);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPushMatrix();
GL11.glLoadIdentity();
GL11.glDisable(GL11.GL_DEPTH_TEST);
if(useTextures)background.bind();
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0.0f, 0.0f);
GL11.glVertex2f(-w,-h);
GL11.glTexCoord2f(1.0f, 0.0f);
GL11.glVertex2f(w,-h);
GL11.glTexCoord2f(1.0f, 1.0f);
GL11.glVertex2f(w, h);
GL11.glTexCoord2f(0.0f, 1.0f);
GL11.glVertex2f(-w, h);
GL11.glEnd();
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPopMatrix();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPopMatrix();
}
现在,当我添加GL11.glTranslatef(20.0f, 20.0f, 0.0f);
你会发现,出现粉红色,这是INT我“initGL”方法创建的颜色: GL11.glClearColor(1.0f, 0.75f, 0.796f, 0.0f);
我GL_PROJECTION包含前推下它,当调用renderBackground()时,我的GL_MODELVIEW未被修改。
GL11.glMatrixMode(GL11.GL_PROJECTION); // Select The Projection Matrix
GL11.glLoadIdentity(); // Reset The Projection Matrix
// Calculate The Aspect Ratio Of The Window
GLU.gluPerspective(45.0f, (float) displayMode.getWidth()/(float) displayMode.getHeight(), 0.1f, 25.0f);
//position camera
GLU.gluLookAt(5.0f, 3.0f, -5.0f, 0.0f, 0.0f, -10.0f, 0.0f, 1.0f, 0.0f);
GL11.glMatrixMode(GL11.GL_MODELVIEW); // Select The Modelview Matrix
“显示错误”:正确的显示将是...什么? – genpfault 2011-05-10 02:56:33
对不起,我的错误。我期待整个多边形充满我的纹理。 – kieve 2011-05-10 02:58:19
它看起来像被填满。你想让多边形填满整个视口吗?如果是这样,在你推动它们之前,你的'GL_PROJECTION'和'GL_MODELVIEW'矩阵的内容是什么? – genpfault 2011-05-10 02:59:59