gpt4 book ai didi

c++ - 物理引擎 : use double or single precision?

转载 作者:可可西里 更新时间:2023-11-01 15:41:16 25 4
gpt4 key购买 nike

我正在从头开始制作一个刚体物理引擎(用于教育目的),我想知道我应该为它选择单精度还是 double float 。

我将使用 OpenGL 对其进行可视化,并使用 glm 库在引擎内部计算内容以及进行可视化。惯例似乎是在几乎所有地方都为 OpenGL 使用 float ,glm::vec3glm::vec4 似乎在内部使用 float .我还注意到虽然有 glm::dvec3glm::dvec4 但似乎没有人使用它。我如何决定使用哪个? double 似乎很有意义,因为它具有更高的精度并且在今天的硬件上性能几乎相同(据我所知),但其他一切似乎都使用 float 除了一些 GLu 的功能和一些 GLFW 的。

最佳答案

这一切都将取决于您的应用程序。您几乎已经了解了两者之间的权衡:

单精度

  • 不太准确
  • 即使在当今的硬件上也能实现更快的计算。占用内存更少,运算速度更快。从缓存优化等中获得更多。

double

  • 更准确
  • 计算速度较慢。

通常在图形应用程序中,考虑到屏幕上的像素数量和场景的缩放比例, float 的精度已经足够了。在科学设置或较小规模的模拟中,您可能需要额外的精度。它还可能取决于您的硬件。例如,我在上网本上为刚体编写了一个基于物理的模拟,并切换到 float 平均获得了 10-15 FPS,这在我的实现中几乎翻了一番 FPS。

我的建议是,如果这是一项教育事件,请使用 float 并定位图形应用程序。如果您在学习、时间安排和个人经验中发现您需要 double ,那么请朝那个方向前进。

关于c++ - 物理引擎 : use double or single precision?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20432006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com