2013-10-10 115 views
-2

我只是在徘徊,不管openGL是否具有2个常量 /具有相同值的符号。具有相同值的OpenGL常量

+2

你指的是哪些常数? –

+0

例如GL_BLEND和GL_MODERLVIEW或GL_TEXTURE_2D等 – Jakunar

+1

为什么不自己检查头文件? –

回答

2

一般而言,针对所识别特定状态令牌这永远不会发生,但具体情况的。正如其他答复中提到的那样,一些引用概念而不是状态的更通用的常量将会成为别名;以及用于掩饰位域中的各个属性的常量。在相同的上下文中,两个不同的标记永远不会具有相同的值,因为无法区分所有有效的传递值。但是,对于在相同函数中不能有效使用的令牌:GL_TRIANGLES(0x04)和GL_LINE_BITS(0x04)会频繁发生。

扩展是OpenGL增长的方式,通过为供应商提供一部分枚举空间用于其扩展来分配命名常量。这可以防止合法/批准的扩展之间发生冲突,并允许扩展随着时间的推移而被修改并引入新的令牌。尽管如此,在扩展从EXT状态迁移到ARB状态并最终采用到核心GL的过程中,有时候引用同一事物的标记的常量值被重新使用。案例分析:GL_FRAMEBUFFER_EXT(从EXT FBO扩展名)是0x8D40GL_FRAMEBUFFER(从ARB扩展/ GL核心3+)也0x8D40

另一方面,OpenGL使用的枚举空间实际上只有16位(尽管GLenum被定义为32位数据类型)。 API可以使用的最大值为65,535个不同的常量值,因此重用是不可避免的。

3

有至少一对:

#define GL_FALSE       0 
... 
#define GL_NONE       0 
+0

嗯好点在那里,但我的意思是设置的意思..就像由启用glEnable或glMatrixMode等 – Jakunar