任何人都可以解释我如何使用glPushName和glPopName。我喜欢使用它们而不是glLoadName,但我总是得到GL_STACK_OVERFLOW和GL_STACK_UNDERFLOW错误。 (首先,然后溢出)。
示例代码对我也有帮助。
注意#1: 我的渲染/ selection_rednering代码由多个glBegin(...)/ glEnd()块组成,如果这是任何问题加上各种旋转和转换。
注意#2: 我知道不推荐使用GL选择/选择,但是我必须在不久前使用OpenGL2.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