OpenGL Display List (Fehlermeldung)

ctac

Mitglied
Hallo Leute,
hab folgendes Problem: (VS 6.0, C++)

Ich erstelle eine Displayliste(DL) mit glGenLists() und kriege den OpenGL-Error
"stack underflow" bei glCallList()...

Allerdings scheint mit einer DL alles zu funktionieren (auch mit error), bloss wenn ich 2. Ansicht im Dialog zeichnen möchte und dafür 2. DL verwende wird die Szene im Dialog nur einmal gezeichnet (die 2. displayliste wird erstellt aber nicht ausgeführt).. :((
 
Kann unterumständen sein dass du begrenzt bist in deiner verschachtelten hierarchie ! Bitte in Spec Prüfen (ob du DisplayLists verschachteln darfst oder ob du sie freigeben darfst). Stack underflow könnte auch darauf hindeuten dass gerade keine Liste "geladen" ist die er ausführen kann.
 
*hm* einen "stack underflow" hab ich noch nie gehabt.
Postet doch mal den relvanten Code, also:
- Erstellen der Displayliste (glGenLists(), glNewList() )
- glCallList() usw..
die Generierung inerhalb der DL kannst du dir sparen, sonst wirds evtl. zuviel.

Überprüfe mal die Rückgabewerte von glGenList() bekommst du da überhaupt einen gültigen Index (>=1) oder ist der 0?
Dann evtl noch nach glNewList() ein glGetError() ausführen und prüfen ob da nicht was faul ist.

Gruß Homer
 
Original geschrieben von Daniel Toplak
*hm* einen "stack underflow" hab ich noch nie gehabt.
Postet doch mal den relvanten Code, also:
- Erstellen der Displayliste (glGenLists(), glNewList() )
- glCallList() usw..
die Generierung inerhalb der DL kannst du dir sparen, sonst wirds evtl. zuviel.

Überprüfe mal die Rückgabewerte von glGenList() bekommst du da überhaupt einen gültigen Index (>=1) oder ist der 0?
Dann evtl noch nach glNewList() ein glGetError() ausführen und prüfen ob da nicht was faul ist.

Gruß Homer

Index ist gülig, >=1; glGetError() meldet "stack underflow"
der OpneGL-error kommt auch bei glNewList(uiListOpenGL,GL_COMPILE_AND_EXECUTE); (_AND_EXECUTE)

An sonsten kann keine Verschachtelung vorliegen, da es zum einen um die GL-Ausgabe in dem Fenster und zum anderene um die GL-Ausgabe in einem Dialog handelt. (Die DL ist allerdings in die Render-Klasse eingebunden und wird mit jedem Objekt erstellt ->für jedes Fenster oder jedes Dialog)

Grüsse

Aufruf der Liste.
Code:
	if(!bListExists || bModified)
	{
		BuildOGLList();
	}

	// Search for a new list
	if(glIsList(uiListOpenGL)==GL_TRUE)
	{
		glCallList(uiListOpenGL);
	} 
// BuildOGLList()
//	 Erase last list
	glDeleteLists(uiListOpenGL,1);
	
	uiListOpenGL = glGenLists(1);
	ASSERT(uiListOpenGL);

	glPushMatrix();
	glNewList(uiListOpenGL,GL_COMPILE);

	DrawTitle();

	glPopMatrix();
	glEndList();

	// List is done now
	bListExists = true;
	bModified = false;
 
Zurück