1

glPushNameとglPopNameの使い方を教えてもらえますか。glLoadNameの代わりにそれらを使用するのが好きですが、常にGL_STACK_OVERFLOWおよびGL_STACK_UNDERFLOWエラーが発生します。(最初に、次にオーバーフローします)。

サンプルコードも役に立ちます。

注1:私のRendering / selection_redneringコードは、複数のglBegin(...)/ glEnd()ブロックで構成されています(これが問題である場合は、さまざまな回転と変換が含まれます)。

注2:GLの選択/ピッキングが非推奨になっていることは知っていますが、少し前にOpenGL2.1で開発されたアプリケーション内に実装する必要があります。

4

1 に答える 1

1

この場合、スタックの容量が非常に少ないため(私の特別なハードウェアの場合は3)、多くのglPushMatrixを実行することによってスタックオーバーフローが発生したため、私はばかげていました。描画モードは問題なく機能しましたが、ピッキングモードに使用する追加のマトリックスがあります。

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 に答える