我目前正在 iPhone 上试验 OpenGL ES 1.1,并尝试了解一些基础知识。到目前为止,我已经成功绘制了一个由一个 GL_LIGHT 照亮的对象网格。这是当前输出的屏幕截图(要遵循的问题)...
所以你可以看到我的测试由大约 140 个立方体组成的网格组成 - 有些立方体稍微升高,这样我就可以看到阴影区域是如何工作的。每个立方体都由该模型(来自 Blender)组成,并具有法线/纹理坐标...
令我困惑的是,为什么我没有在整个表面上获得“均匀”的照明。每个立方体似乎都是单独照亮的,我可以理解为什么会这样......但是,如果您将这个模型从 block 中排列出来并在其上照射光,那么是否不可能像“正常”那样进行光线过渡。我希望在每个单独的立方体上不会看到暗边,而是在整个区域上看到平滑的过渡。
(我仍然为自己能走到这一步而感到高兴!)
任何帮助或解释都会很棒。 谢谢, 西蒙
最佳答案
您没有获得“均匀”照明的原因是因为我假设您正在使用每个顶点照明。也就是说,照明是按顶点计算的,并在构成模型的每个三角形上进行插值。由于您的立方体的多边形数量非常少,因此光线在模型上的过渡看起来不会平滑。
使用 OpenGL ES 1.1 有两种解决方案。您可以使用更高的多边形数模型或实现每像素 (DOT3) 照明。我自己没有实现过这个,但之前遇到过这个问题(我的解决方案是切换到 OpenGL ES 2.0 并使用着色器来执行每像素照明)。
这是一个可能有用的链接:What is DOT3 lighting?
祝一切顺利!
关于iphone - 如何在 OpenGL ES 1.1 (iPhone) 中平滑纹理对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7588016/