以下代碼會生成以下圖像。我用於背景的圖像是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