浮点精度(fp:precise vs.fp:fast)


10

在C或C ++中,浮点精度的编译器选项是否真的在现实世界(小型/独立)游戏中有所作为?

根据我的观察,设置fp:fast的速度比fp:precise快很多倍,据我在此处的理解(/programming/6889522/fpfast-vs-fpprecise-what-kind-of-errors-can -i-encounter),两个编译器选项之间的精度差仅从浮点数的第16位开始变化。

在使用fp:fast进行2D或3D游戏时,有人遇到过一个例子吗?

编辑:为澄清起见,我并不是在问浮点值本身的精度(即,浮点数,双精度数和小数)。仅关于与编译器选项有关的精度。

Answers:


11

您对fp:fast和fp:precise的解释听起来可疑;我敢肯定,除了小数点后16位后的舍入误差外,还有更多的效果。有关更多详细信息,请参考Bruce Dawson的有关浮点精度的文章

通常,浮点精度错误绝对是游戏开发中的实际问题。对于物理程序员以及游戏世界大或运行时间长(数周或数月,如MMO)的游戏来说,这尤其麻烦。浮点精度误差通常表现为仿真不稳定性和抖动运动,随着时间的推移,抖动会逐渐恶化。如果您没有在游戏中看到这些工件,并且性能显着提高,那么坚持使用fp:fast绝对是安全的。


1
-1浮点精度不是游戏开发中的主要问题。选择错误的数据类型以及缺乏数字知识和算法是导致本文提到的所有问题的原因。我参与的所有项目都使用了fp:fast,没有提到任何问题。
迈克·塞德

是的,我们的结论是相同的。我的观点是,浮点精度在游戏开发的某些领域可能是个问题,这就是为什么(在那些领域)您需要所提到的数字知识和适当的数据类型。
postgoodism 2012年

+1为双方建立了良好的联系,并为您提供了maik semder的答案。我还看到人们为此类错误而苦苦挣扎,这仅仅是因为他们不知道应该在代码中使用哪种操作。
Ali1S232

@postgoodism感谢您的回答。不忽略您的输入。请稍等一两天,看看我是否收到更多回复。
伊尼希尔(Inisheer)2012年

@MaikSemder基本上只使用fp:fast然后,除非您真的希望fp:precise看到各种奇怪的问题(可以在游戏的复杂计算中注意到,例如@postgoodism所说的物理)。谢谢,对此很纳闷。
Nikos
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.