深度テストを有効にするには、OpenGL の init メソッドに何を追加する必要がありますか? また、それを実際にテクスチャ レイヤリングにどのように使用しますか?
glOrtho の最後のパラメーターを -1 よりも極端なものに拡張する必要があり、もちろん glEnable 深度テストも必要です。それを使用するには、glVertex の 3 番目のパラメーターを 0 以外の値に変更して、他のテクスチャの前/後ろに送信することしか考えられません。
私はこれを試してみましたが、いまいましいテクスチャは表示されません。xD 何かが欠けているに違いない。
編集: RE: ティムの応答
画像のzを-1よりも極端にすると、画面が真っ黒になることはありませんでした。
void initGL(){
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_DEPTH_TEST); //depth test enabled
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glOrtho(-width/2, width/2, -height/2, height/2, 1, -10);//far changed to -10
GL11.glMatrixMode(GL11.GL_MODELVIEW);
}
と
void loadBG(int theLoadedOne){
GL11.glBindTexture(GL11.GL_TEXTURE_2D, theLoadedOne);
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0,0);
GL11.glVertex3f(-width/2,height/2, -2);//new z value
GL11.glTexCoord2f(1,0);
GL11.glVertex3f(width/2,height/2,-2);//new z value
GL11.glTexCoord2f(1,1);
GL11.glVertex3f(width/2,-height/2,-2);//new z value
GL11.glTexCoord2f(0,1);
GL11.glVertex3f(-width/2,-height/2,-2);//new z value
GL11.glEnd();
GL11.glFlush();
}
と
while(!Display.isCloseRequested()){
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
...
for(int i=0;i<1;i++){ //dont mind this for loop
bg.loadThisBG(0); //its here for reasons
}
updateFPS();
Display.update();
} Display.destroy();
}