Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi OpenGL 3D Cube grafikproblem (https://www.delphipraxis.net/133509-opengl-3d-cube-grafikproblem.html)

cherry 3. Mai 2009 13:46


OpenGL 3D Cube grafikproblem
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo Leute

Ich möchte mich ein bisschen in das Thema OpenGL einarbeiten. Dazu habe ich mir ein Buch gekauft. (ist leider ein bisschen alt) -> "Delphi Developers Guide to OpenGL".

Nun bei dem aktuellen beispielprogramm aus dem Buch, gehts um son 3d cube. nur leider wird der irgendwie grafisch nicht richtig dargestellt. Siehe Bild.

Auf der CD des Buches sind die Programme alle drauf und wenn ich das auf meinem PC (habe auch andere getestet) ausführe, passiert das selbe. Nur die Illustration im Buch zeigt den Würfel korrekt. ;-)

Liegt wohl an der OpenGL Version oder wie?
Was kann ich dagegen tun, oder ist vielleicht ein Fehler im Code.

PS: Nur so nebenbei, wenn ich
Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
  OpenGLReady := false;
  wglMakeCurrent(glDC,0);
// throws an error?!
//  wglDeleteContext(GLContext);
end;
wglDeleteContext(GLContext); nicht ausklammere, erhalte ich eine Zugriffsverletzung, siehe Bild 2.

Habe das ganze Projekt mal attached...
klicke ein paar mal auf rotate um den Fehler zu erkennen.

danke schon mal..

mkinzler 3. Mai 2009 13:49

Re: OpenGL 3D Cube grafikproblem
 
Was für eine Grafikkarte?

cherry 3. Mai 2009 13:58

Re: OpenGL 3D Cube grafikproblem
 
aufm notebook eine Intel onboard. Habs aber soeben auf meinem PC, Radeon 9800 pro, mit dem selben Effekt getestet.

Desmulator 3. Mai 2009 14:14

Re: OpenGL 3D Cube grafikproblem
 
Kann es sein, dass die camera zu nahe an dem Objekt ist?
Von DirectX weiß ich, dass man in der Projektion die Minimale und Maximale Sichtweite einstellen kann.
Das sieht sehr dannach aus, als würe die eine Ecke des Würfels abgeschnitten werden, somit die Innenseiten angezeigt. ( Ich setze mal vorraus, dass BackfaceCulling ist an ^^ )
Ich würde entwerder den Wert der Minimalen Sichtweite senken, oder die Camera weiter weg schieben.

PS: Ich hab mir dein Projekt mal angegukt. Es geht um die Funktion glFrustum. Du rufst sie in der Zeile 104 in der MainForm.pas auf. Der zweitletzte Parameter steh Für die Nähe. Momentan wird er auf 2.0 gesetzt, mach mal ein 0.0 drauß, ich bin mir sicher, dass es dann geht. :)

Medium 3. Mai 2009 14:20

Re: OpenGL 3D Cube grafikproblem
 
Definitiv ein Near-Clippig Problem. Würfel und Kamera weiter auseinander, und es dürfte richtig aussehen. Irgendwann sehr bald sollte in dem Buch das Thema Clippinplanes dann auftauchen hoffe ich :)

cherry 3. Mai 2009 14:23

Re: OpenGL 3D Cube grafikproblem
 
Zitat:

Zitat von Desmulator
...oder die Camera weiter weg schieben.

hat funktioniert. ;-) danke.
Jetzt bleibt noch das andere problemchen, warum kann ich den GLContext am schluss nicht löschen.
Siehe beschrieb in Beitrag 1#.

Corpsman 3. Mai 2009 14:23

Re: OpenGL 3D Cube grafikproblem
 
hi cherry,

schau dir mal DGLOpenGL an, da gibts viele tolle sachen zum einsteigen. und die neuesten OpenGL header für Delphi.

@Desmulator

den near wert würde ich nie auf 0 setzen nim 0.1 oder was anderes kleines.

[Edit]

wegen deines Context Probs hast du mal

Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
  OpenGLReady := false;
// throws an error?!
  wglDeleteContext(GLContext);
  wglMakeCurrent(glDC,0);

end;
Probiert ?

[edit=mkinzler]URL-Tag korrigiert Mfg, mkinzler[/edit]

Flips 3. Mai 2009 14:29

Re: OpenGL 3D Cube grafikproblem
 
Kamera weiter weg schieben ist aber keine Dauerlösung, ich poste einfach mal, wie man das Clipping-Problem beseitigt.
Delphi-Quellcode:
//Innerhalb der Projection-Matrix
gluPerspective(60, FCW/FCH, 0.001, 128);
FCW = ClientWidth, FCH = ClientHeight
gluPerspective auf delphigl.com

cherry 3. Mai 2009 14:49

Re: OpenGL 3D Cube grafikproblem
 
Zitat:

Zitat von Corpsman
wegen deines Context Probs hast du mal

Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
  OpenGLReady := false;
// throws an error?!
  wglDeleteContext(GLContext);
  wglMakeCurrent(glDC,0);

end;
Probiert ?

jep, geht auch nicht. selber error.

Flips 3. Mai 2009 15:01

Re: OpenGL 3D Cube grafikproblem
 
Vielleicht zuerst den Context deaktivieren.
Kann allerdings sein, dass die Methode nur in der dglOpenGL.pas implementiert ist.
Delphi-Quellcode:
 
DeactivateRenderingContext;
wglDeleteContext(GLContext)
wglMakeCurrent(glDC,0);


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz