iphone - 如何在 OpenGL ES 1.1 (iPhone) 中平滑纹理对象

标签 iphone objective-c opengl-es blender

我目前正在 iPhone 上试验 OpenGL ES 1.1,并尝试了解一些基础知识。到目前为止,我已经成功绘制了一个由一个 GL_LIGHT 照亮的对象网格。这是当前输出的屏幕截图(要遵循的问题)...

enter image description here

所以你可以看到我的测试由大约 140 个立方体组成的网格组成 - 有些立方体稍微升高,这样我就可以看到阴影区域是如何工作的。每个立方体都由该模型(来自 Blender)组成,并具有法线/纹理坐标...

enter image description here

令我困惑的是,为什么我没有在整个表面上获得“均匀”的照明。每个立方体似乎都是单独照亮的,我可以理解为什么会这样......但是,如果您将这个模型从 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/

相关文章:

iphone - 根据配置更改显示名称

objective-c - 我可以使用系统错误代码作为用户定义的错误代码吗

ios - 显示键盘时必须单击按钮?

iphone - 在 iPhone 上使用 OpenGL 的分层 2D 应用程序最有效的 "architecture"?

ios - GPUImage - 自定义直方图生成器

iphone - 适用于 iPhone 的 PDF 查看/注释库?

iphone - 远程向客户演示 iPhone 应用程序

iphone - 如何测试应用程序的加载时间?

objective-c - 防止键盘 split 并阻止它

java - 使用 OpenGL 在 Android 中交叉淡入淡出场景