9

我知道 Open GL 需要使用数字,但为什么不只使用常规的整数和浮点数或已经存在的包装类(无论哪个是整个 Open GL 世界很好地融合在一起所必需的)?除了名称和在 Open GL 中专门使用的名称之外是否有区别,或者它们几乎是相同的东西但名称不同?

4

1 回答 1

21

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

可以使用抽象出“不同整数”的混乱的转换函数来做到这一点,但这会导致性能损失,当您谈论进出显卡的每个数字时,这通常是不可接受的。

tl; dr 使用“int”时,您在编写时要考虑到处理器的硬件。使用“GLInt”时,您在编写时要考虑到显卡的硬件。

编辑:正如评论中指出的那样,int出于兼容性原因,在 64 位处理器上,可以(并且可能会)32 位。从历史上看,通过 8 位、16 位和 32 位硬件,它一直是处理器的本机大小,但从技术上讲,它是编译器在创建机器代码时感觉使用的任何东西。@Nicol Bolas 和 @Mark Dickinson 的道具

于 2012-09-07T22:55:40.633 回答