OpenGL の影に少し問題があります。モデルにはすべての面に影があり、OpenGL は、面が光源から指している方向に暗さを与えます。光が面を通過するだけであることに気付きました。つまり、2 つの平面が隣り合っていて、光源が片側にある場合、遠い側の平面はまだ点灯しています。
どうすればこれが起こらないようにできますか? 3D 環境全体で機能するシャドウ コードが必要です。
private static void setUpLighting() {
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightModel(GL_LIGHT_MODEL_AMBIENT, BufferTools.asFlippedFloatBuffer(new float[]{0.05f,
0.05f, 0.05f, 1f}));
glLight(GL_LIGHT0, GL_POSITION,
BufferTools.asFlippedFloatBuffer(new float[]{0, 0, 0, 1}));
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_DIFFUSE);
glEnable(GL_TEXTURE_2D);
}