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

Aktuelle Zeit: Do Jul 10, 2025 15:19

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL Bildschirmschoner ruckelt
BeitragVerfasst: Di Nov 11, 2008 15:19 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
HI,

ich hab mir vor kurzem einen Bildschirmschoner gebastelt, der benutz eig. nur GL_QUADS, GL_LINES und n Renderpass, und trotzdem ruckelt der wie sau auf meinem Laptop. Auf meinem Desktop-PC läuft er 1a! Ich ne GeForce 9200M GS im Laptop und eig. auch den neusten Treiber. Weiß jmd wie ich das beheben kann?

MfG Bergmann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 12, 2008 00:49 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Für sowas würde ich mir OpenGL Profiling wünschen. Gibts sowas eigentlich?
Ich mein sowas wie Eclipse TPTP. Das wär schon doll...

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 12, 2008 08:33 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Ich hatte mr mal ein kleines Progrämmli geschrieben, das die aktuelle OpenGL-Version und die unterstützten Extensions einfach in ein Text-Logfile schreibt. Es ist ein Delphi-Programm. Ich würde das zur Verfügung stellen, aber nur wenn Bergmann89 es wirklich brauchen kann, denn es ist in meinem System verzahnt und ich muss es erst "herauslösen".

Unser Header kann das im Prinzip auch. Wir sitzen alle auf einem Haufen nützlicher Software und Utilities und wissen es garnicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 12, 2008 08:51 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Flash hat geschrieben:
Für sowas würde ich mir OpenGL Profiling wünschen. Gibts sowas eigentlich?
Ich mein sowas wie Eclipse TPTP. Das wär schon doll...

Von AMD gibt es das GPU PerfStudio. Der listet so einige Informationen auf. Allerdings braucht man dafür eine Radeon 9500+, XP SP2+ und einen halbwegs aktuellen Treiber. Aber das hilft bei NV rein gar nichts.

Bergmann89: Ich vermute einfach mal, dass du da etwas benutzt was nicht richtig in Hardware unterstützt wird. Wenn ich das im Delphi-Forum richtig gesehen habe, dann benutzt du Offscreenbuffer. Ich tippe mal auf FrameBufferObject? Dann schau mal wie es sich verhält, wenn du dieses seltener aktualisierst oder nicht mehr zum Zeichnen benutzt. Bzw evtl reicht es ja schon aus, wenn es als Größe eine Potenz von 2 hat oder nur maximal 1024x1024.

Leider kann man in OpenGL nicht richtig herrausfinden, wann etwas in Hardware realisiert wird und wann es in Software (CPU) berechnet wird. Das merkt man dann nur, wenn die Frameraten verhältnismäßig stark sinken. Dort gibt es entweder nur die Möglichkeit, dass man weiß woran es liegt oder man muss systematisch mal verschiedene Sachen deaktivieren etc. Um so herrauszufinden wo das Problem steckt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 12, 2008 13:46 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
HI,

ichhab den Renderpass ma ausgeschalten, und es hat sich nix geändert. Ich benutz auch kein FrameBuffer Objekt, ich kopier einfach gleich den Inhalt vom Buffer in die Textur (mit glCopyTexImage2D, so wie im RenderPass-Tutorial beschrieben). Die Textur ist immer genau so groß, wie die Bildschirmauflösung. Ich hab ma den relevanten Quelltext mit angehängt. vlt. seht ihr was, was ich noch nich weiß...

MfG Bergmann.


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 17, 2008 16:46 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
HI,

Problem gelöst: ein einfaches sleep(1); hat gereicht^^
Voher:

Code:
  1. procedure TForm1.IdleHandler(Sender: TObject; var Done: Boolean);
  2. begin
  3.   StartTime := GetTickCount;
  4.     if DrawScreens then RenderScreenTexture;
  5.     Render;
  6.   DrawTime := GetTickCount - StartTime;
  7.   if DrawTime = 0 then DrawTime := 1; //hier hab ich die Zeit einfach um 1 erhöht,
  8. //wenn sie 0 war, damit überhaupt was bewegt wird. aber damit kahm er nich klar
  9.   Inc(TimeCount, DrawTime);
  10.   Inc(FrameCount);
  11.  
  12.   if TimeCount >= 1000 then
  13.     begin
  14.       Frames := FrameCount;
  15.       TimeCount := TimeCount - 1000;
  16.       FrameCount := 0;
  17.       Caption := IntToStr(Frames) + ' FPS';
  18.     end;
  19.   [...]
  20.   Done := False;
  21. end;


nachher:
Code:
  1. procedure TForm1.IdleHandler(Sender: TObject; var Done: Boolean);
  2. begin
  3.   StartTime := GetTickCount;
  4.     if DrawScreens then RenderScreenTexture;
  5.     Render;
  6.     sleep(1); //deshalb bin ich auf die Idee gekommen es mal so zu versuchen.
  7.   //also ihm die MilliSekunde nich vorgaukeln, sondern wirklich eine MS warten
  8.   DrawTime := GetTickCount - StartTime;
  9.   Inc(TimeCount, DrawTime);
  10.   Inc(FrameCount);
  11.  
  12.   if TimeCount >= 1000 then
  13.     begin
  14.       Frames := FrameCount;
  15.       TimeCount := TimeCount - 1000;
  16.       FrameCount := 0;
  17.       Caption := IntToStr(Frames) + ' FPS';
  18.     end;
  19.   [...]
  20.   Done := False;
  21. end;


Und schon läuft das ding auch auf dem Laptop...

MfG Bergmann.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


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.007s | 14 Queries | GZIP : On ]