次のコードは、次の画像を生成します。背景に使用している画像は、displayModeと同様に640x480です。テクスチャの背景は.bmpであり、Slickテクスチャローダーでロードされます。なぜそれがクワッドを埋めていないのか、なぜそれが反映されているのか混乱しています。編集:私のOpenGLシーンの背景はピンクで、表示される黒は作成されたクワッドのものです。背景画像は、「テスト」が貼られた2pxの水色の境界線が付いた緑色のブロックです。
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);
すると、ピンクが表示されます。これは、私の「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