OpenGL:找不到GL_MAX_UNIFORM_BUFFERS和类似的宏定义

问题描述 投票:0回答:1

在OpenGL Superbible第5版中,在统一缓冲区对象部分,它这样说:

单个程序可以使用的统一块的最大数量是固定的,并且在任何给定着色器阶段可以使用的最大数量也是固定的。您可以通过使用 GL_MAX_UNIFORM_BUFFERS 参数(针对每个程序的总数)以及分别针对顶点、几何和片段着色器限制的 GL_MAX_VERTEX_UNIFORM_BUFFERS、GL_MAX_GEOMETRY_UNIFORM_BUFFERS 或 GL_MAX_FRAGMENT_UNIFORM_BUFFERS 调用 glGetIntegerv 来找到这些限制。

我还在第六版和第七版中找到了对这些内容的参考。

我似乎无法在“GL/”标头、Khronos 文档或任何搜索引擎中的任何位置找到这些宏定义。

这是本书多个版本中都存在的编辑错误,还是我在尝试查找时遗漏了一些(不太明显?)明显的细节?

c++ c opengl
1个回答
0
投票

我认为这些只是《超级圣经》系列中的错误,这似乎是提到这些常数的唯一来源。 OpenGL 4.5 Core 规范 本身在第 7.6.2 节中进行了说明:

每个着色器阶段使用的活动统一块的数量有一组与实现相关的最大值。如果程序中任何着色器阶段使用的uniform块数量超过其相应的限制,程序将无法链接。顶点、曲面细分控制、曲面细分评估、几何、片段和计算着色器的限制可以通过调用

GetIntegerv
来获取,其中 pname 值为
MAX_VERTEX_UNIFORM_BLOCKS
MAX_TESS_CONTROL_UNIFORM_BLOCKS
MAX_TESS_EVALUATION_UNIFORM_BLOCKS
MAX_GEOMETRY_UNIFORM_BLOCKS
MAX_FRAGMENT_UNIFORM_BLOCKS分别是 
MAX_COMPUTE_UNIFORM_BLOCKS

当然,这些常量在代码中应该以

GL_
为前缀。

© www.soinside.com 2019 - 2024. All rights reserved.