【发布时间】:2012-10-16 02:35:03
【问题描述】:
我在 OpenGL 中遇到了一些阴影问题。模型在每个面上都有一个阴影,OpenGL 给它一个黑暗,脸部从光源指向的方向。我注意到光线只是穿过面,这意味着如果两个平面彼此相邻且一侧有一个光源,则较远一侧的平面仍然亮着。
我将如何阻止这种情况发生?我需要一些适用于整个 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);
}
【问题讨论】:
-
你用的是什么阴影算法?