Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在桌面OpenGL中有没有控制FP精度的方法?_Windows_Opengl_Precision_Nvidia - Fatal编程技术网

Windows 在桌面OpenGL中有没有控制FP精度的方法?

Windows 在桌面OpenGL中有没有控制FP精度的方法?,windows,opengl,precision,nvidia,Windows,Opengl,Precision,Nvidia,当使用的OpenGL版本为2.0时,是否可以强制GPU在着色器中使用highp floats?我知道精度修饰符基本上是一个概念,但是floats在我测试的桌面上默认使用mediump,这让我发疯 我在Win10下使用GTX1070GPU(驱动程序版本23.21.13-9135)运行GL项目时,偶然发现了这个问题。我甚至没有在我的着色器中设置#version,所以我希望精度会自动达到最大 顺便说一句,OpenGL 2.x标准没有定义任何方法来提示GPU 24个尾数位中至少有20个是有效的(通过浮点

当使用的OpenGL版本为2.0时,是否可以强制GPU在着色器中使用
highp float
s?我知道精度修饰符基本上是一个概念,但是
float
s在我测试的桌面上默认使用
mediump
,这让我发疯

我在Win10下使用GTX1070GPU(驱动程序版本23.21.13-9135)运行GL项目时,偶然发现了这个问题。我甚至没有在我的着色器中设置
#version
,所以我希望精度会自动达到最大

顺便说一句,OpenGL 2.x标准没有定义任何方法来提示GPU 24个尾数位中至少有20个是有效的(通过浮点数传递整数,因为GL 2.0无法在本机上对整数进行操作),但这是3年来我第一次看到桌面GPU做这样的事情,所以我从未想过这是可能的


需要帮助。

您如何知道使用了
mediump
float?即使它是glsl es,也将由实现定义highp浮点的位宽。对于桌面gl,没有精度限定符。当GTX1070不使用32位IEEE浮点数时,我会感到相当惊讶。另外:如果未指定版本,则着色器将被视为版本1.10。这并不意味着精度已达到最大值。@BDL我知道这一点,因为我看到正在绘制的精灵获取错误的纹理,导致输出混乱,好像只有约16位尾数通过管道。我很清楚,桌面OpenGL中不存在精度限定符,正如我在问题中所述。对于OpenGL 2.0,有关can get上浮点值的唯一保证是由第2.1.1节定义的。如果您需要更好的保证,则必须至少使用330版。在150和330之间,“内部处理精度不需要符合IEEE浮点规范”一句被更改为“着色器中的浮点变量也根据IEEE 754单精度浮点值规范进行编码。”@BDL理解,谢谢。嗯,似乎我必须解决这个问题,而且永远不要将浮点填充到容量…=(即使是IEEE浮点也只有23个显式存储的尾数位。所以我想你对溢出理论的看法是正确的。