gpt4 book ai didi

c++ - 默认情况下是 GLfloat 还是 GLdouble?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:11:00 30 4
gpt4 key购买 nike

在 C++ 中,最好默认使用 double,只有当我们确实需要它们时才使用 floatlong double。不过对于 OpenGL,我看到 GLfloat 似乎是默认值。考虑到 double 现在在最新的 GPU 上很常见,它仍然有意义吗?

最佳答案

情况正好相反。你应该在 C++ 中默认使用 float 并且只有在你确定你确实需要那些额外的精度数字时才使用 double (对于某些科学,可能是天文或粒子物理、模拟)。通常当您认为需要 double 时,您应该使用定点,或者您应该将 float 值置于正确的范围内。

对图形使用 double 。尽管所有现代 GPU 都很好地支持它,但 double 学通常比单精度慢,而且它没有明显的优势。与“图形”相关的一切(或者假设 99.99%,因为“一切”是一个非常明确的措辞)就此而言使用 floatGLfloat 工作得很好。
即使在几年前,当一些 GPU 仅以 24 位精度工作时,也没有明显的区别。

事实上,当人们使用 double 是因为他们认为他们应该这样做时,那么 99% 的时间他们都做错了。

Tom Forsyth 甚至将“ double ”作为他 Offend-O-Matic 的第一点.他专门与“游戏”相关,但它实际上适用于几乎所有软件,一些科学模拟除外。请务必阅读随附的文章 A Matter of Precision理解他的推理。
埃里克森的 epsilon is not 0.000001 关于 float 的必读内容不那么令人反感。演示文稿。

在 OpenGL 中非常相似。如果您了解 float 的工作原理并正确使用它,那么 float 就可以正常工作。应用变换矩阵等时的舍入误差是不可见的。
如果您不理解它是如何工作的,使用 double 会将问题向后转移一点,但当您不期望它时它仍然会咬住您。

令人惊讶的是,即使是现在人们仍然使用 double 浮点,即使是出于货币或时间等荒谬的原因(因为它的精度是两倍,嗯?)并且当它在他们面前爆炸时会感到惊讶人们开始对他们大喊大叫。

关于c++ - 默认情况下是 GLfloat 还是 GLdouble?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20121105/

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