我目前正在iPhone上使用OpenGL ES 1.1进行实验,并试图了解一些基本知识。到目前为止,我已经设法绘制了一个用GL_LIGHT照明的对象网格。这是当前输出的屏幕截图(后面的问题)...
因此,您可以看到我的测试由一个约140个立方体的网格组成-有些稍微升高了一点,所以我可以看到阴影区域如何工作。每个立方体都包含此模型(来自Blender),并具有法线/纹理坐标...
让我感到困惑的是为什么我的整个表面都没有均匀的照明。每个立方体似乎都被单独点亮,我可以理解为什么会这样...但是,如果像将模型布置成块状并在其上照亮一样,不可能“正常”地进行光过渡。我希望在每个单独的立方体上都不会看到黑边,而是在整个区域上都能平滑过渡。
(我仍然内向地嘲笑我设法做到了这一点!)
任何帮助或解释都将很棒。
谢谢,
西蒙
最佳答案
之所以没有“统一”照明,是因为我假设您正在使用逐顶点照明。也就是说,照明是针对每个顶点计算的,并在组成模型的每个三角形上进行插值。由于您的立方体的多边形数量很低,因此整个模型上的光过渡看起来不会很平滑。
使用OpenGL ES 1.1,有两种解决方案。您可以使用更高的多边形数量模型或实施每像素(DOT3)照明。我自己尚未实现此功能,但之前遇到过此问题(我的解决方案是切换到OpenGL ES 2.0并使用着色器执行每像素照明)。
这是一个可能有用的链接:What is DOT3 lighting?
祝一切顺利!