Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 06, 2025 16:34

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: gl3ds - "Stack underflow"
BeitragVerfasst: Fr Jan 04, 2008 19:18 
Offline
DGL Member

Registriert: So Aug 06, 2006 08:48
Beiträge: 91
Hallo,

ich bin neu was das Arbeiten mit OGL und dem ganzen "Drumherum" angeht.
Soweit bin ich: Ich initialisiere OpenGL - alles wie in den Tutorials hier beschrieben - und kann auch "per Hand" Primitiven erstellen und anzeigen. Doch sobald ich mit Hilfe der gl3ds.pas eine .3ds-Datei laden will gibts Probleme:
Das Objekt wird zwar geladen, doch zu sehen ist die (.tga-)Textur nur in schwarz/weiß, wobei Weiß auch nicht angezeigt wird, stattdessen ein "Keine Farbe zugewießen"-Grün. Als wäre das nicht genug sinkt die Framezahl von ~2000 auf 3FPS ab und OpenGL meldet einmal den Fehler "Stack underflow".

Das ganze muss wohl irgendwie mit der Textur zusammenhängen, aber ich habe keinen Plan was ich falsch mache. Sagt mir was ihr braucht um mir zu helfen: Source-Code (von dem ich glaube dass er korrekt ist, nachdem ich die Tutoruials und das Bsp nochmal durchgegangen bin)? Die .3ds-Datei? die Textur?

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 04, 2008 19:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Bei einem Stack-Underflow liegt der Fehler mit ziehmlicher Sicherheit in deinem Sourcecode, also poste den doch mal bitte.
Achte vorallem auf glPush* und glPop*-Anweisungen, wenn du da mehr glPops als glPushs hast, dann kommt der Stack-Underflow zum Beispiel.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 04, 2008 19:31 
Offline
DGL Member

Registriert: So Aug 06, 2006 08:48
Beiträge: 91
Genau, das wundert mich ja weil ich weder in den Stack schreibe noch daraus lese:
Code:
  1. procedure TForm_Main.Render;
  2. begin
  3.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  4.  
  5.   glMatrixMode(GL_PROJECTION);
  6.   glLoadIdentity;
  7.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  8.  
  9.   glMatrixMode(GL_MODELVIEW);
  10.   glLoadIdentity;
  11.  
  12.   glTranslatef(0,0,-10);
  13.   glRotatef(-45,0,1,0);
  14.   glBegin(GL_TRIANGLES);
  15.     glColor3f(1,0,0); glVertex3f(-1,-1, 0);
  16.     glColor3f(0,0,1); glVertex3f( 1,-1, 0);
  17.     glColor3f(0,1,0); glVertex3f( 0, 1, 0);
  18.   glEnd();
  19.  
  20.   Model.Render;
  21.  
  22.   SwapBuffers(DC);
  23. end;


Ich habe mich exakt an den Code aus den Tutorials gehalten, und der Fehler tritt auch nicht auf wenn ich Model.Render auskommentiere. OGL wir ebenfalls wie in den Tus initialisiert, das Objekt danach geladen:
Code:
  1. procedure TForm_Main.FormCreate(Sender: TObject);
  2. begin
  3.   DC:= GetDC(Handle);
  4.   if not InitOpenGL then Application.Terminate;
  5.   RC:= CreateRenderingContext( DC,
  6.                                [opDoubleBuffered],
  7.                                32,
  8.                                24,
  9.                                0,0,0,
  10.                                0);
  11.   ActivateRenderingContext(DC, RC);
  12.   SetupGL;
  13.   InitOpenGL;
  14.   Init;
  15.   Application.OnIdle := IdleHandler;
  16. end;

Code:
  1. var
  2.   Model: TAll3dsMesh;
  3.  
  4. procedure TForm_Main.SetupGL;
  5. begin
  6.   glClearColor(0.3, 0.4, 0.7, 0.0); //Hintergrundfarbe: Hier ein leichtes Blau
  7.   glEnable(GL_DEPTH_TEST);          //Tiefentest aktivieren
  8.   glEnable(GL_CULL_FACE);           //Backface Culling aktivieren
  9. end;
  10.  
  11. procedure TForm_Main.Init;
  12. begin
  13.   //
  14.   Model := TAll3dsMesh.Create(nil);
  15.   Model.TexturePath := 'Textures/';
  16.   Model.LoadFromFile('Models/cube.3ds');
  17. end;
  18.  
  19. procedure TForm_Main.ErrorHandler;
  20. var
  21.   s: string;
  22. begin
  23.   s := gluErrorString(glGetError);
  24.   if s <> 'no error' then
  25.     Showmessage('OpenGL meldet: "' + s + '"');
  26. end;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 04, 2008 20:26 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
does your mesh use transparency?
could you post the mesh you are using?

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 05, 2008 08:08 
Offline
DGL Member

Registriert: So Aug 06, 2006 08:48
Beiträge: 91
I only created a small cube. The material is a standardmaterial textured using "diffuse color" - "bitmap".


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 05, 2008 19:37 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
Why do you call initopengl twice? Try removing the second one.
The cube.3ds is not at fault as it renders correctly with the latest released version of gl3ds.

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 06, 2008 09:28 
Offline
DGL Member

Registriert: So Aug 06, 2006 08:48
Beiträge: 91
Sorry, but I work with the latest released version of gl3ds I think (http://www.noeska.com/downloads/vclgl3ds_5b.zip right?). Also glbitmap.pas and DGLOpenGL.pas are updated nevertheless problem keeps existing.^^
Perhaps you can send me your testprogram to test compiling with my Delphiversion (D7 Personal)?! Thank you!


//EDIT: Second initopengl has been removed - no effect on my problem^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 06, 2008 21:43 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
It works for me with version 5b. But glbitmap could be the cause.
What version of glBitmap are you using? I use version Version 1.8.10 of glBitmap.

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 07, 2008 16:53 
Offline
DGL Member

Registriert: So Aug 06, 2006 08:48
Beiträge: 91
I use version 1.8.11 - but i also tried v1.8.10 - no difference. Can you post your source - or should I send my project to you?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 07, 2008 19:46 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
What version of dglopengl are you using? I use:
Version 2.0
Date : 06.12.2005

For an working example just download: http://www.noeska.com/downloads/vclgl3ds_5b.zip and modify the example to load cube.3ds instead of hog.txt and then it should work.

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 07, 2008 20:34 
Offline
DGL Member

Registriert: So Aug 06, 2006 08:48
Beiträge: 91
I use version 2.1 - i will try with version 2.0 as soon as I find this version to download.^^
Loading the cube.3ds in your example no error occures, but the picture is just black; ~6fps. (dglopengl v2.1)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 08, 2008 18:09 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
Ok now change the part that renders the mesh to:
Code:
  1.  
  2. // Render the mesh
  3. glpushmatrix();
  4.  gltranslatef(0.0,-5.0,-10.0);
  5.  //glscalef(0.01,0.01,0.01);
  6.  glrotatef(45,0.0,1.0,0.0);
  7.  mesh1.Render;
  8. glpopmatrix();
  9.  

And you should see your cube also.

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 08, 2008 18:56 
Offline
DGL Member

Registriert: So Aug 06, 2006 08:48
Beiträge: 91
Ahh - yeah, great, it works! But why is the speed low (sometimes only 3fps) - hog2.txt is rendered with ~1000fps?!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 10, 2008 18:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
Hmm i don't know i get 60fps wich is the refresh rate of my laptopscreen.
What brand of videocard are you using?

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 11, 2008 08:49 
Offline
DGL Member

Registriert: So Aug 06, 2006 08:48
Beiträge: 91
ATI Radeon 9600 XT - 256MB; Refreshrate: 75Hz


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]