Opengl GLS是浮点型还是整数型?

Opengl GLS是浮点型还是整数型?,opengl,Opengl,opengl规范中的表2.2说明GLhalf是一个16位浮点标量,但在头文件glext.h中定义为 typedef unsigned short GLhalf; 这意味着它是一个整数类型。哪一个是正确的?在GPU上,GLhalf是一个16位浮点标量数,将以该格式进行加法/乘法/etc 在CPU上,许多C编译器没有16位浮点类型。因此,无符号短定义告诉C编译器,每个值将占用内存中的16位 不幸的是,这意味着C编译器还允许您对这些值进行加法/乘法/etc/运算,因为CPU将对这些值执行16位整数运

opengl规范中的表2.2说明GLhalf是一个16位浮点标量,但在头文件glext.h中定义为

typedef unsigned short GLhalf;

这意味着它是一个整数类型。哪一个是正确的?

在GPU上,GLhalf是一个16位浮点标量数,将以该格式进行加法/乘法/etc

在CPU上,许多C编译器没有16位浮点类型。因此,无符号短定义告诉C编译器,每个值将占用内存中的16位

不幸的是,这意味着C编译器还允许您对这些值进行加法/乘法/etc/运算,因为CPU将对这些值执行16位整数运算,这将使它们完全出错。所以不要那样做。甚至不要写“foo=2”


您可以获得C的半精度浮点库,有些C编译器确实支持16位浮点。如果您想在GLhalf上执行CPU操作,可以使用其中的一个。

这不是规范所说的。文本是“用无符号标量编码的半精度浮点值”。@BDL:这不是该问题的重复。这个问题是关于
GL_HALF_FLOAT
枚举器的;这是关于C或C++数据类型,您可能会使用这个枚举器来填充数据所消耗的数据。请关注共享那些可以创建16位浮点的库之一。我听说在半精度数字上的运算比在单精度数字上的运算要快,所以它会提高性能,嗯?我自己没有使用过,所以没有推荐。几乎可以肯定的是,它在CPU上不会更快,因为格式将被模拟,因此每次操作都需要多个CPU指令。但在GPU上可能会更快