什么值对应于OpenGL术语(对于GL_TRUE或GL_TEXTURE_2D,e.x。)?

时间:2014-05-07 22:17:14

标签: opengl

我正在写一个标题。我需要知道那些东西的价值。复制和粘贴此信息或链接到源是足够的。 不要简单地回答GL_TRUE或GL_TEXTURE_2D,我要求提供与OpenGL中存在的每个术语相对应的值。

2 个答案:

答案 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. 即使您在GL4计算机上运行您的应用程序,也无法在GL3计算机上进行编译;
  2. 即使您实际上没有使用补丁,也无法在GL3机器上编译它。
  3. 出于这个原因,我有时选择硬编码值而不使用符号名称。

答案 1 :(得分:0)

好的,我会回答这个问题。

如果你有一个Linux盒子,

% grep '^#define GL_.*0x' /usr/include/GL/gl.h

将在OpenGL头文件中生成所有#define名称值对(而不是函数调用之类的其他内容)

如果你有MacOS X,那么相同的命令,但是/System/Library/Frameworks/OpenGL.framework/Headers/gl.h