gpt4 book ai didi

opengl - 为什么OpenGL使用float而不是double?

转载 作者:行者123 更新时间:2023-12-02 11:43:16 24 4
gpt4 key购买 nike

我想知道为什么 OpenGL 在其函数中使用 float 而不是 double 。 Double 应该比 float 准确得多。

最佳答案

过去,许多 OpenGL 函数确实有 double 变体。 glMultMatrix例如有 fd 变体。其中大多数已经不存在了,但这与 floatdouble 无关。 glMultMatrixd glMultMatrixf 在核心 GL 3.1 及更高版本中已消失。

core OpenGL ,仍然有一些函数具有 double 变体。 glDepthRange 采用 double,尽管有一个 float 版本(主要是为了兼容 GL ES)。有些函数没有double变体,例如glBlendColor

有时,OpenGL 只是不一致。其他时候,它只是遵循一个合理的原则:不欺骗用户。

glBlendColor 。如果您可以向其传递 double 值,则意味着浮点混合以 double 精度进行。因为它肯定不会(在任何现有的硬件上),所以提供提供这种准确性的 API 对用户来说是一个默认的谎言。您正在将高精度值进行低精度运算。尽管 glDepthRange 的逻辑相同(没有 double 深度缓冲区不可用),但它需要 double。再说一遍,不一致。

glUniform*函数套件是一个更好的例子。他们将状态设置到当前程序对象中。在 GL 4.0 之前,double 版本并不存在。为什么?因为那是一个谎言。 GLSL 4.0 之前版本不允许您声明double,原因很简单,4.0 之前版本的硬件无法实现。如果硬件无法处理,那么允许用户创建 double 型是没有意义的。

关于opengl - 为什么OpenGL使用float而不是double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012985/

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