glPushName + glPopName堆栈溢出和下溢

时间:2010-03-07 22:41:16

标签: opengl selection stack-overflow picking stackunderflow

任何人都可以解释我如何使用glPushName和glPopName。我喜欢使用它们而不是glLoadName,但我总是得到GL_STACK_OVERFLOW和GL_STACK_UNDERFLOW错误。 (首先,然后溢出)。

示例代码对我也有帮助。

注意#1: 我的渲染/ selection_rednering代码由多个glBegin(...)/ glEnd()块组成,如果这是任何问题加上各种旋转和转换。

注意#2: 我知道不推荐使用GL选择/选择,但是我必须在不久前使用OpenGL2.1开发的应用程序中实现它。

1 个答案:

答案 0 :(得分:1)

在这种情况下,我只是愚蠢,因为堆栈溢出是由对多个glPushMatrix做的,因为该堆栈的容量非常低(在我的特殊硬件情况下为3)。绘图模式工作正常,但我有一个额外的矩阵用于拾取模式。

如何使用glPopName / glPushName(name)

glPushName(obj->name());
glBegin(...);
//draw it;
glEnd();

glPushName(obj->child->name());
glBegin(...);
//draw child it;
glEnd();

glPopName();
glPopName(); //important, or yoou will get a stackoverflow after some time
相关问题