为什么有GLint和GLfloat?

时间:2012-09-07 22:52:15

标签: class opengl floating-point int primitive-types

我认为Open GL需要使用数字,但为什么不只是使用常规的int和浮点数或已经存在的包装类(无论哪个是Open GL的整个世界都需要很好地融合在一起)?除了名称之外是否存在差异,而在Open GL中仅使用一个名称,或者它们的名称几乎完全相同?

1 个答案:

答案 0 :(得分:19)

因为int(在这里过于简单化)32位系统上的32位和64位系统上的64位 - 所以即使只是" int"不是一个普遍的概念。请记住,运行图形代码的硬件与cpu不同的硬件,并且出现了对新类型的需求。通过使用自己的typedef,OpenGL可以确保在将数据发送到图形卡时以正确的方式打包正确的位数。

使用转换功能可以做到这一点,这些功能可以消除"不同的内容"的混乱,但这会导致性能损失,当你谈论每一个时,通常是不可接受的单个号码进出显卡。

tl; dr使用" int"时,请记住处理器的硬件。使用" GLInt"时,请记住使用显卡的硬件。

编辑:正如评论中所指出的,在64位处理器上,出于兼容性原因,int可以(也可能是)32位。从历史上看,通过8位,16位和32位硬件,它一直是处理器的原生大小,但从技术上讲,无论编译器在创建机器代码时使用什么感觉。讲道@Nicol Bolas和@Mark Dickinson