LWJGL を使用して Minecraft のようなボクセル エンジンを作成していますが、最適化で問題が発生しています。さて、明らかに、カリングはおそらくパフォーマンスに大きなプラスの影響を与えるでしょう。そのため、バック フェース カリングを行うために、次のようなことを行いました。
if (chunk.getWorld().getGame().cam.getZ() >= zz)
{
glTexCoord2f(1, 1);
glVertex3f(1, 1, 0);
glTexCoord2f(0, 1);
glVertex3f(0, 1, 0);
glTexCoord2f(0, 0);
glVertex3f(0, 0, 0);
glTexCoord2f(1, 0);
glVertex3f(1, 0, 0);
}
そして、いくつかの問題が発生するまでは問題なく動作します。非表示の面 (ブロック間の面) が引き続き描画され、表示リストを使用すると正確に更新されません。これが私の質問です。表示リストを使用してどのように選別しますか? glEnable(GL11.GL_CULL_FACE); をやってみました。しかし、それは私にこれを返しました.それは後ろではなく正面を選別しているようです:
これは、glEnable によってカリングが有効になっていないため、私のカリングも無効になっています (リストでは無意味なので)。すべて問題ないように見えますが、パフォーマンスは大幅に改善される可能性があると思います。
これは私のコードです。何か不足している場合はお問い合わせください。必要に応じてプロジェクト全体をアップロードできます。
編集:立方体を描画するために他のコードをコピーしましたが、カリングを有効にしても正しく見えません。