我正在写一个标题。我需要知道那些东西的价值。复制和粘贴此信息或链接到源是足够的。 不要简单地回答GL_TRUE或GL_TEXTURE_2D,我要求提供与OpenGL中存在的每个术语相对应的值。
答案 0 :(得分:4)
目前还不清楚。为什么不在标题中使用GL符号名称?例如:
enum PrimitiveType {
Triangles = GL_TRIANGLES,
TriangleStrip = GL_TRIANGLE_STRIP
}
无论如何,OpenGL规范并没有要求令牌的任何特定值。它改为引用Implementers' Guide和Khronos发布的官方标题,后者又是从例如here可用的spec / XML文件生成的。
到目前为止,我发现硬编码值(而不是放置符号名称)的唯一原因是允许代码在不公开这些值的平台上编译。例如,假设我正在编写一段绘制基元的代码,我正在定义上面的枚举。然后我可以继续定义更原始的类型,然后我到达:
Patches = GL_PATCHES
这种原始类型的实际使用仍然会受到版本运行时检查的保护,但是这个特定的行不会在OpenGL 3实现上编译(因为GL_PATCHES
目前用于镶嵌,即OpenGL 4)。那就是:
出于这个原因,我有时选择硬编码值而不使用符号名称。
答案 1 :(得分:0)
好的,我会回答这个问题。
如果你有一个Linux盒子,
% grep '^#define GL_.*0x' /usr/include/GL/gl.h
将在OpenGL头文件中生成所有#define名称值对(而不是函数调用之类的其他内容)
如果你有MacOS X,那么相同的命令,但是/System/Library/Frameworks/OpenGL.framework/Headers/gl.h