作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在为 iOS 在 SceneKit 中编写一个场景。
我正在尝试使用 sprite 表将纹理应用于对象。我使用以下代码遍历该工作表中的图像:
happyMaterial = [SCNMaterial new];
happyMaterial.diffuse.contents = happyImage;
happyMaterial.diffuse.wrapS = SCNWrapModeRepeat;
happyMaterial.diffuse.wrapT = SCNWrapModeRepeat;
happyMaterial.shaderModifiers = @{ SCNShaderModifierEntryPointGeometry : @"_geometry.texcoords[0] = vec2((_geometry.texcoords[0].x+floor(u_time*30.0))/10.0, (_geometry.texcoords[0].y+floor(u_time*30.0/10.0))/7.0);" };
一切都很好。除了随着时间的推移,纹理开始出现随机抖动,尤其是沿着 x 轴。
有人提到这可能是因为“浮点精度问题”,但我不确定如何诊断或修复此问题。
另外:我不确定如何从着色器代码中记录数据。如果能够查看像“u_time”这样的变量并准确了解发生了什么,那就太棒了。
最佳答案
这绝对是一个浮点精度问题。您可能应该尝试对 (u_time*30.0) 进行取模,以便它在合理的范围内循环。
关于ios - 随着时间的推移,在 SceneKit 中使用着色器修改器为纹理设置动画会导致纹理抖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28886111/
我是一名优秀的程序员,十分优秀!