我是制作简单游戏的初学者,我为机器人建模并提供了控件。你基本上走来走去,但是有重力。直到我发现它有点奇怪之前,我让它掉了很长一段时间,效果一直很好。
然后,当我掉下平台后,在y轴上大约为-2000,出现了变形:
这仅仅是一个压缩问题吗?我尝试将其压缩和未压缩,但同时发生了两种方式。也许引擎有问题?
答案 0 :(得分:1)
根据您提供的数字,很明显您遇到浮点精度问题。确切的效果取决于您的平台,但是OpenGL ES着色语言规范对硬件制造商有一些最低要求:
https://www.khronos.org/files/opengles_shading_language.pdf(第4.5.2节)
尽管Khronos集团似乎提高了newer edition of the specification中highp
的最低精度要求,而OpenGL ES 3.0似乎是the version required,但我不知道您是什么确切地使用了您的硬件,以及您的硬件符合该规范的程度,因此,我将使用我链接的第一个规范。基于此,GLSL浮点数具有以下最低精度:
highp : 2^-16 = 0.0000153
mediump: 2^-10 = 0.000977
lowp : 2^-8 = 0.00391
假设您的硬件没有超出最低要求,那么即使您的原产地为20,000个单位,即使使用highp
,也会遇到约0.3个单位的精度问题。考虑到顶点在1x1x1单位框中,相对于对象的大小,这相当于30%的误差,这与您共享的图像一致。
作为解决方案,请尝试使您的物体靠近原点。在需要时更改您的原点。