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

Aktuelle Zeit: Fr Jul 18, 2025 11:52

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Framerate viel zu niedrig
BeitragVerfasst: Di Jul 20, 2004 09:11 
Offline
DGL Member

Registriert: Di Jul 20, 2004 08:58
Beiträge: 4
Wohnort: Chemnitz
Hi,
ich hatte mir das OpenGL15_vcl_template runtergeladen und ein wenig damit herumprobiert.
Aber erschreckender weise musste ich feststellen das ich, selbst wenn ich bloß ein einfaches bild ausgebe (200x50) frameraten zwischen 10 und 14 fps hab (wenn ich ein ganzes hintergrundbild zeichnen will (800x600) nur 0.8-1.2 fps. das ist doch nicht normal, oder??

weiß nicht, ob ich etwas falsch mache
Code:
  1.  
  2. ...LoadTexture('ship.tga', Tex2, false);
  3. {geschiet nur einmal, etwa beim drücken einer taste}
  4. .
  5. .
  6. .
  7. glBindTexture(GL_TEXTURE_2D, Tex2);
  8.  glBegin(GL_QUADS);
  9.   glTexCoord2f(0,0); glVertex3f(posx, posy, 1);
  10.   glTexCoord2f(0,1); glVertex3f(posx, posy+50, 1);
  11.   glTexCoord2f(1,1); glVertex3f(posx+200, posy+50, 1);
  12.   glTexCoord2f(1,0); glVertex3f(posx+200, posy, 1);
  13.  glEnd;
  14.  


oder ob es an meiner grafikkarte liegt (nicht mehr die neueste):
NVIDIA GeForce2 MX/MX 400
32,00 MB (33.554.432 Bytes)
nv4_disp.dll
Treiberversion 6.13.10.2958

schon mal danke für ne antwort
sandmann[/code]

_________________
Geh und frag deine Mutter! Und wenn Sie beschäftigt ist, versuchs im Internet!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 20, 2004 09:25 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Nein, das ist nicht normal, habe bis vor kurzem selbst mit ähnlicher Konfiguration gearbeitet. De verwendest das normale VCL Template? Was hast du bislang alles geändert? Wenn du im Idle Event der Anwendung zeichnest, hast du evtl ein "Done := False" entfernt. Bzw. laufen bei dir derzeit alle OpenGl Anwendungen schlecht? (Zum Testen eignen sich auch OpenGl-Spiele, z.B. alle Quake ab V2)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 20, 2004 10:00 
Offline
DGL Member

Registriert: Di Jul 20, 2004 08:58
Beiträge: 4
Wohnort: Chemnitz
Hab mal den zutreffenden code gepostet (destroy und andere nicht veränderte\benutzte sachen hab ich rausgelassen)
Das mit dem Spiel kann ich nicht sagen, hab ich nämlich nicht auf dem Rechner. :-/

Code:
  1.  
  2. //Meine Zeichenroutine
  3. procedure TGLForm.Drawtexture;
  4. begin
  5.  glBindTexture(GL_TEXTURE_2D, Tex);
  6.  glBegin(GL_QUADS);
  7.    glTexCoord2f(0,0); glVertex3f(0, 0, -0);
  8.    glTexCoord2f(0,1); glVertex3f(0, 600, -0);
  9.    glTexCoord2f(1,1); glVertex3f(800, 600, -0);
  10.    glTexCoord2f(1,0); glVertex3f(800, 0, -0);
  11.  glEnd;
  12.  
  13.  glBindTexture(GL_TEXTURE_2D, Tex2);
  14.  glBegin(GL_QUADS);
  15.   glTexCoord2f(0,0); glVertex3f(posx, posy, 1);
  16.   glTexCoord2f(0,1); glVertex3f(posx, posy+50, 1);
  17.   glTexCoord2f(1,1); glVertex3f(posx+200, posy+50, 1);
  18.   glTexCoord2f(1,0); glVertex3f(posx+200, posy, 1);
  19.  glEnd;
  20. end;
  21.  
  22. // =============================================================================
  23. //  TForm1.FormCreate
  24. procedure TGLForm.FormCreate(Sender: TObject);
  25. begin
  26.  
  27. InitOpenGL;
  28.  
  29. DC := GetDC(Handle);
  30.  
  31. RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
  32.  
  33. ActivateRenderingContext(DC, RC);
  34.  
  35. glEnable(GL_DEPTH_TEST);
  36.  
  37. glDepthFunc(GL_LESS);
  38.  
  39. glClearColor(0,0,0,0);
  40.  
  41. glEnable(GL_ALPHA_TEST);
  42. glAlphaFunc(GL_GREATER, 0.1);
  43.  
  44. //Backface Culling
  45. glEnable(GL_CULL_FACE);
  46. glCullFace(GL_BACK);
  47.  
  48. // Idleevent für Rendervorgang zuweisen
  49. Application.OnIdle := ApplicationEventsIdle;
  50.  
  51. // Zeitpunkt des Programmstarts für FPS-Messung speichern
  52. StartTick := GetTickCount;
  53.  
  54. glMatrixMode(GL_PROJECTION);
  55.  glLoadIdentity;
  56.  glOrtho(0,800,600,0, -1,1);
  57.  glEnable(GL_TEXTURE_2D);
  58. end;
  59.  
  60. // =============================================================================
  61. //  TForm1.ApplicationEventsIdle
  62. procedure TGLForm.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
  63. begin
  64.  
  65. glMatrixMode(GL_MODELVIEW);
  66. glLoadIdentity;
  67. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  68.  
  69. GLForm.Caption:='FPS: '+floattostrF(fps, ffgeneral, 8, 5);
  70.  
  71. Drawtexture; //Zeichnen
  72.  
  73. SwapBuffers(DC);
  74.  
  75. Done := False;
  76.  
  77. inc(Frames);
  78. if GetTickCount - StartTick >= 500 then
  79.  begin
  80.  FPS       := Frames/(GetTickCount-StartTick)*1000;
  81.  Frames    := 0;
  82.  StartTick := GetTickCount;
  83.  end;
  84. end;
  85.  
  86. procedure TGLForm.FormKeyPress(Sender: TObject; var Key: Char);
  87. begin
  88. case Key of
  89.  't' : begin
  90.         LoadTexture('grass.tga', Tex, false);
  91.         LoadTexture('cursor.tga', Tex2, false);
  92.        end;
  93.  #27 : Close;
  94. end;
  95. end;
  96.  
  97. end;
  98.  

_________________
Geh und frag deine Mutter! Und wenn Sie beschäftigt ist, versuchs im Internet!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 20, 2004 11:06 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
1.
Code:
  1. glTexCoord2f(0,0); glVertex3f(0, 0, -0 <!-- s:?: --><img src=\"{SMILIES_PATH}/icon_question.gif\" alt=\":?:\" title=\"Question\" /><!-- s:?: --> );


2. versuch mal deine Texturen im FormCreate zu laden.

3. Lass dir mir mir glgeterror opengl fehler ausgeben.

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 20, 2004 11:40 
Offline
DGL Member

Registriert: Di Jul 20, 2004 08:58
Beiträge: 4
Wohnort: Chemnitz
scheint alles nicht so recht zu klappen (*schluchz*)

hab die error-abfragen sowohl im idle-, als auch im create- und drawbereich laufen lassen,
aber es gab nur no_error's.
Code:
  1.  
  2. glMatrixMode(GL_MODELVIEW);
  3. glLoadIdentity;
  4. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  5.  
  6. GLForm.Caption:='FPS: '+floattostrF(fps, ffgeneral, 8, 5);
  7.  
  8. Drawtexture;
  9.  
  10. SwapBuffers(DC);
  11.  
  12. e:=glgeterror;
  13. if e<>gl_no_error then
  14. messagedlg('Error: '+gluerrorstring(e),mterror,[mbok],0);
  15.  


gut, "-0", war nicht so intelligent, aber daran wirds nicht gelegen haben, oder ?? ... ;-)

hab die texturen auch im create-ereignis geladen
Code:
  1.  
  2. ...
  3. Application.OnIdle := ApplicationEventsIdle;
  4. // Zeitpunkt des Programmstarts für FPS-Messung speichern
  5. StartTick := GetTickCount;
  6.  
  7. glMatrixMode(GL_PROJECTION);
  8.  glLoadIdentity;
  9.  glOrtho(0,800,600,0, -1,1);
  10.  glEnable(GL_TEXTURE_2D);
  11.  
  12. LoadTexture('grass.tga', Tex, false);
  13. LoadTexture('cursor.tga', Tex2, false);
  14. ...
  15.  


aber: 2 fps !!
was soll ich nur machen...

_________________
Geh und frag deine Mutter! Und wenn Sie beschäftigt ist, versuchs im Internet!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 20, 2004 11:52 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
laufen deine anderen progs richtig?
falls du keine anderen hast lad dir doch bitte irgendwo was kleines runter und prob das mal.

vieleicht liegt es ja wirklich an der hardware.

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 20, 2004 16:10 
Offline
DGL Member

Registriert: Do Nov 20, 2003 19:52
Beiträge: 48
Wohnort: Tillingen bei Chemnitz
Wenn du das
Code:
  1.  
  2. GLForm.Caption:='FPS: '+floattostrF(fps, ffgeneral, 8, 5);
  3.  

in jedem Frame machst, könnts daran liegen, probiers mal damit, die Caption nur bei jedem berechnen der FPS zu aktualisieren, nich in jedem Frame.

_________________
...die Idee ist gut, doch die Welt noch nicht bereit...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 20, 2004 16:23 
Offline
DGL Member

Registriert: Di Jul 20, 2004 08:58
Beiträge: 4
Wohnort: Chemnitz
nein, das hat praktisch gar keinen einfluss (0,1 fps oder so)
aber da die anderen beispielprogramme von der site auch nicht besonders schnell liefen
(der partikel-feuer-test mit 10, glaub ich, wirds wohl doch an der hardware liegen...
was ich mir bei nem pentium3 (997), 256MB Ram und ner GForce2 MX gar nicht so recht erklären kann... :( :(
nu ja, vieleicht fällt jemandem ja noch was ein... :-/
sandmann

_________________
Geh und frag deine Mutter! Und wenn Sie beschäftigt ist, versuchs im Internet!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 20, 2004 16:34 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Also bis vor ein paar Monaten habe ich selbst auf einem Duron 800 mit 192 MB Ram und Geforce 2MX gearbeitet und hatte keine derartigen Schwierigkeiten - was ich alles damit gemacht habe, sieht man ja an den Tutorias. Aber was du mal testweise machen könntest, ist DirectX und deine Grafiktreiber neu einzuspielen - evtl hängt hier das Problem.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 21, 2004 11:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
also mal kurz von mir ein statement. also wenn das mit den treibern nicht hilft, solltest du mal sehen, was passiert, wenn du nur ein einfaches kleines dreieck ohne textur zeichnest. achja das partikelprog läuft bei mir auch nicht sooo viel besser und ich hab ne gf4mx. ich könnte mir wirklich vorstellen, dass du das problem durch das form.caption hast, da das nicht nur 1 fps zerrt, sondern wesentlich mehr (zumindest bei mir) !!!! sollteste, falls noch ne gemacht wirklich probieren. allgemein zugriffe auf fensterelemente wie caption application.title oder sowas dauert einfach mal ewig.

woran es auch noch liegen kann ist, das du ein pixelformat nutzt, was nur softwareseitig unterstützt wird. das ging mir leider auch schon so und ist echt nicht leicht zu finden der "fehler".

bisse denne rswm

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 21, 2004 13:09 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Zieh dir im Zweifelsfalle mal das Programm glinfo von delphi3d.net > "3D Hardware Info". Und dann schau mal was du für einen Renderer hast. Wenn dort irgendwas mit Microsoft steht dann solltest du deinen Grakatreiber neu installieren.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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 ]