【问题标题】:How can I smooth texture objects in OpenGL ES 1.1 (iPhone)如何在 OpenGL ES 1.1 (iPhone) 中平滑纹理对象
【发布时间】:2011-11-27 03:08:09
【问题描述】:

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

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

让我感到困惑的是,为什么我没有在整个表面上获得“均匀”的照明。每个立方体似乎都是单独点亮的,我可以理解为什么会这样......但是如果你将这个模型从块中排列出来并照亮它,是否不可能像“正常”那样进行光过渡.我希望不会在每个单独的立方体上看到暗边,而是整个区域的平滑过渡。

(我仍然在内心为自己能走到这一步感到高兴!)

任何帮助或解释都会很棒。 谢谢, 西蒙

【问题讨论】:

    标签: iphone objective-c opengl-es blender


    【解决方案1】:

    您没有获得“均匀”照明的原因是因为我认为您使用的是逐顶点照明。也就是说,照明是按顶点计算的,并在构成模型的每个三角形上进行插值。由于您的立方体的多边形数量非常少,因此模型上的光线过渡看起来并不平滑。

    使用 OpenGL ES 1.1 有两种解决方案。您可以使用更高多边形数量的模型或实施每像素 (DOT3) 照明。我自己没有实现这个,但之前遇到过这个问题(我的解决方案是切换到 OpenGL ES 2.0 并使用着色器来执行逐像素光照)。

    这是一个链接,可能有用:What is DOT3 lighting?

    一切顺利!

    【讨论】:

    • 感谢您的解释。这真的很有意义。 OpenGL 不可能知道我的意图,所以它会根据我提供的参数做它可以做的事情。我已经认为多边形数量会有所帮助,之前已经尝试过更低的多边形模型(OpenGL 只照亮角落!)。
    • 只是为了确认其他有此“问题”的人,DOT3 照明确实可以将其平滑一点,但我预计更高的多边形数量将是一个更好的组合选择。
    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    相关资源
    最近更新 更多