我目前正在试用iPhone上的OpenGL ES 1.1并试图了解一些基础知识。到目前为止,我已设法绘制一个用一个GL_LIGHT点亮的对象网格。以下是当前输出的屏幕截图(要遵循的问题)......
所以你可以看到我的测试包含一个大约140个立方体的网格 - 有些略高,所以我可以看到阴影区域是如何工作的。每个立方体都包含此模型(来自Blender)并具有法线/纹理坐标......
让我感到困惑的是,为什么我没有在整个表面上获得“均匀”的照明。每个立方体似乎都是单独点亮的,我可以理解为什么会这样......但是,如果你将这个模型从块中排出并在它上面照射一个光,就不可能“正常”地进行光转换。 。我希望在每个立方体上看不到暗边,而是整个区域的平滑过渡。
(我仍然内心地说,我设法做到这一点!)
任何帮助或解释都会很棒。 谢谢, 西蒙
答案 0 :(得分:2)
你没有得到“均匀”照明的原因是因为我认为你正在使用每个顶点照明。也就是说,每个顶点计算光照并在构成模型的每个三角形上进行插值。由于您的立方体的多边形数量非常低,因此模型中光线的过渡看起来不会很平滑。
使用OpenGL ES 1.1有两种解决方案。您可以使用更高的多边形数模型或实现每像素(DOT3)照明。我自己没有实现这个,但之前遇到过这个问题(我的解决方案是切换到OpenGL ES 2.0并使用着色器来执行每像素照明)。
这是一个可能有用的链接:What is DOT3 lighting?
一切顺利!