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

Aktuelle Zeit: Mo Jul 21, 2025 22:16

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2003 12:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wenn es flackert (sprich in ganz kurzen Abständen Bild->Schwarz->Bild->usw...), dann liegt es mit großer Wahrscheinlichkeit daran, das du beim Erstellen deines Pixelformates vergessen hast, DoubleBuffering zu aktiveren, und so nur in den Frontpuffer gezeichnet wird.
Erstell deshalb mal ein Pixelformat mit aktiviertem Doublebuffering, und schon sollte das Flackern verschiwinden.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2003 12:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Der unterschie zwischen Flacker und Flimmern ist sehr gering. Flimmern ist eher das was dein Monitor bei 60Hz macht. Und flackern ist irgendwie langsamer und sieht brutaler für die Augen aus. Würde ich jedenfals so sehen.

Zu deinem Problem. Verwendest du irgendeine Art von Doublebuffering? Wenn nicht ist klar warum es flackert.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2003 13:10 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Der Screenshot sieht aus, wie bei diesen Holographie - Kristallen. Arbeitest Du an so etwas?

Gruß
KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2003 13:12 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Ich dachte immer durch SwapBuffer(hDC) verwende ich DoubleBuffering?


Nein, du musst beim Erstellen deines Pixelformates explizit angeben, das du Doublebuffering verwenden willst.Wenn du dies gemacht hast, dann wird dies durch SwapBuffers auch genutzt...ansonsten nutzt diese Funktion auch nur den Frontpuffer zum Zeichnen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2003 13:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
In obigem Code wird auf jeden Fall ein Pixelformat mit aktivem Doublebuffering gewählt.Daran kanns jetzt also nicht mehr liegen.Evtl. gibts deshalb Probleme mit der Near- bzw. Farclippingplane...wäre also ned schlecht, wenn du mal posten könntest welche Werte du da nutzt, und in welchem Z-Bereich deine Punkte liegen können.Da könnte es nämlich Probs geben.

Ausserdem wärs net schlecht, wenn du das Flackern (bzw. Flimmern) mal etwas genauer beschreiben könntest, oder das Programm mal hochladen könntest...das würde die Fehlersuche erheblich erleichtern.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2003 13:34 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
Wenn's doch am PFD oder der Initalisierung liegen sollte, vielleicht mal anderen Code ausprobieren.

Tut Nr1. DGL von Phobeus.
<a href='http://www.phobeus.de/hosting/dgl/main.php?id=2&page=tutorial&tut=lesson1&print=1' target='_blank'>http://www.phobeus.de/hosting/dgl/main.php...lesson1&print=1</a>

Nehe (müsste auch Nr 1 sein...):
<a href='http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=01' target='_blank'>http://nehe.gamedev.net/data/lessons/lesso...n.asp?lesson=01</a>

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2003 13:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Also auf meiner Radeon9700 sieht man nix, es sei denn man verändert die Ansicht, denn dann sieht man für den Bruchteil einer Sekunde deine Objekte...da scheint also etwas mächtig falsch zu laufen.

Ich hab jetzt natürlich nicht deinen kompletten Quellcode, weshalb ich nur mal ne Vermutung anstellen kann...kann es sein, das du es mit den Matrizen nicht so richtig nimmst?
In deinem letzten Codeschnippsel setzt du nämlich deine Perspektive via gluPerspective in der Modelansichtsmatrix, was man nicht machen soll (oder besser darf).Die Modelansichtsmatrix ist dafür da, um Objekte zu verschieben, rotieren und anzuzeigen, während man z.B. das Setzen der Projektion (wie der Name vermuten lässt) in der Projektionsmatrix macht.

Im Code müsste das in etwa so aussehen (deine Renderfunktion) :
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(...);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
// Rotiere und verschiebe Objekte
// Zeige Objekte an</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

P.S. : Wenn du Probs mit der richtigen Nutzung von OpenGLs Matrizenmodi hast, dann empfehl ich dir unbedingt mal das entsprechende Kapitel im Redbook (gibts bei uns in der Downloadsektion).

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2003 13:58 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 23, 2003 13:44
Beiträge: 4
hi, habe mich denn mal registriert :)

also habe meinen code jetzt verändert:

Code:
  1. int w = FrMain->ClientWidth;
  2.  &nbsp; &nbsp;int h = FrMain->ClientHeight;
  3.  &nbsp; &nbsp;glViewport( 0, 0, w, h );
  4.  
  5.  &nbsp; &nbsp;glMatrixMode(GL_PROJECTION);
  6.  &nbsp; &nbsp;glLoadIdentity();
  7.  
  8.  &nbsp; &nbsp;if(!ortho) {glDepthRange(0,10000); gluPerspective( pangle , (double)w / max( (double)h, 1.0 ), 1.0, 1000.0 );}
  9.  &nbsp; &nbsp;if(ortho) glOrtho((-dimmax/sf)*sx,(dimmax/sf)*sx, (-dimmax/sf)*sy, (dimmax/sf)*sy, -10000, 10000);
  10.  &nbsp; &nbsp;glMatrixMode(GL_MODELVIEW);
  11.  &nbsp; &nbsp;glLoadIdentity;


nutzt aber leider nicht viel :( flackert es denn gar nicht bei dir? vor allem, wenn du das objekt verschiebst? bei mir flackert es mächtig...

Zitat:
Also auf meiner Radeon9700 sieht man nix, es sei denn man verändert die Ansicht, denn dann sieht man für den Bruchteil einer Sekunde deine Objekte...da scheint also etwas mächtig falsch zu laufen.


verstehe nicht so ganz, was passiert, wenn du die ansicht änderst!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2003 14:11 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
verstehe nicht so ganz, was passiert, wenn du die ansicht änderst!

Wenn ich das Programm auf meiner Radeon9700 starte, und das mitgelieferte Modell lade, dann sehe ich erstmal gar nix...sprich die Zeichenfläche bleibt schwarz, und erst wenn ich die Ansicht z.B. mit der Maus rotiere, dann seh ich für den Bruchteil einer Sekunde bei jeder Änderung der Ansicht das Modell.Lass ich die Maus wieder loss, dann ist die Zeichnefläche wieder schwarz.

Also stimmt was mit deinen Matrizen immer noch nicht (geh sicher, das du alle deine Aktionen auch in den entsprechenden Matrizenmodi machst), oder du löschst irgendwo ausversehen den Bildschirm.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2003 14:18 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 23, 2003 13:44
Beiträge: 4
ok, habe eine neue version ins web gestellt...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2003 14:27 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Aha...schon viel besser!Die funktioniert jetzt wunderbar auf meinem Rechner.Es flackert jetzt nix mehr, und die Modelle sind permanent sichtbar.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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 | 15 Queries | GZIP : On ]