1

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

示例代码也会对我有所帮助。

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

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

4

1 回答 1

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
于 2010-03-08T00:10:44.610 回答