Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在OpenGL ES 1.1(iPhone)中平滑纹理对象_Iphone_Objective C_Opengl Es_Blender - Fatal编程技术网

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

如何在OpenGL ES 1.1(iPhone)中平滑纹理对象,iphone,objective-c,opengl-es,blender,Iphone,Objective C,Opengl Es,Blender,我目前正在iPhone上试用OpenGL ES 1.1,并试图了解一些基本知识。到目前为止,我已经成功地画出了一个由一盏GL_灯照亮的物体组成的网格。这是当前输出的屏幕截图(接下来的问题) 所以你可以看到我的测试由大约140个立方体组成的网格-一些稍微升高,这样我可以看到阴影区域是如何工作的。每个立方体由该模型(来自Blender)组成,并具有法线/纹理坐标 让我困惑的是,为什么我不能在整个表面上获得“统一”的照明。每个立方体似乎都是单独点亮的,我可以理解为什么会这样。。。但是,如果您将此模

我目前正在iPhone上试用OpenGL ES 1.1,并试图了解一些基本知识。到目前为止,我已经成功地画出了一个由一盏GL_灯照亮的物体组成的网格。这是当前输出的屏幕截图(接下来的问题)

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

让我困惑的是,为什么我不能在整个表面上获得“统一”的照明。每个立方体似乎都是单独点亮的,我可以理解为什么会这样。。。但是,如果您将此模型从块中排列出来并在其上照射灯光,是否不可能使灯光过渡“正常”呢。我希望在每个立方体上看不到暗边,而是整个区域的平滑过渡

(我内心仍然为自己能走到这一步而欣喜若狂!)

任何帮助或解释都会很棒。 谢谢
Simon

您没有获得“统一”照明的原因是因为我假定您使用的是逐顶点照明。也就是说,照明是逐顶点计算的,并在构成模型的每个三角形上插值。由于立方体的多边形数很低,因此光线在模型上的过渡看起来并不平滑

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

以下是一个链接,可能有用:


祝你一切顺利

谢谢你的解释。这很有道理。OpenGL不可能知道我的意图,所以它会根据我提供的参数做它能做的事情。我之前已经尝试过更低的多边形模型(OpenGL只照亮角落!),我已经认为多边形数会有所帮助。为了证实其他人有这个“问题”,DOT3照明确实会稍微平滑一些,但我预计更高的多边形数将是一个更好的组合选择。