У меня проблемы с тенями в OpenGL. Модели имеют тень на каждом лице, OpenGL дает ему темноту, через какое направление лицо указывает от источника света. Я заметил, что свет просто проходит через грани, а это означает, что две плоскости, где рядом друг с другом и источник света находятся с одной стороны, плоскость на дальней стороне все еще светится.LWJGL с тенями для всей 3D-среды
Как я могу остановить это? Мне нужен теневой код, который работает для всей 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);
}
Какой теневой алгоритм вы используете? –