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

Aktuelle Zeit: Sa Jul 19, 2025 10:27

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Aug 02, 2005 14:26 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Hiho Leutz,

hab was komischen entdeckt bei meinem Programm: bei jedem Neuzeichnen des "OpenGL-Panels" steigt der Speicherverbrauch des Programmes, den ich im Taskmanager sehe. Da bin ich meinen Quellcode durchgegangen, habe aber bei meinen Sachen keine Mem-Leaks gefunden und der restliche Code ist nur OpenGL. Ist das verhalten normal? Puffert da OpenGL vielleicht was, und ab einer bestimmten Grenze passiert das dann nicht mehr?

Habe dann nämlich mal meine Test-OpenGL-Programm genommen, welche ich mit Visual C++ erstellt habe und da tritt das aber nicht auf.

Passiert das noch bei sonstwem?

MfG Pellaeon


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 14:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also bei mir passiert das nicht. Da musst du unbewusst irgendwo einen Fehler drinne haben. Ich kann dir nur memproof empfehlen. Damit solltest du dir mal dein Programm anschauen und dann siehst du wo der Speicher nicht wieder frei gegeben wird. Du solltest TD32 Debuginfos anschalten und dem Programm deine Quellcodepfade mitteilen. Dann siehst du ganz genau die Stelle an der es passiert. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 14:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
hm werd ich mal ziehen, ich hoffe das läuft auch mit Delphi 2005, obwohls net dasteht ... .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 15:00 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Code:
  1.  
  2. procedure initDraw(hWindow : HWND);
  3. var   rect                : TRect;
  4.       clipSizeX,clipSizeY : GLdouble;
  5.             LModelAmbient : Array [0..3] of GLfloat;
  6. begin
  7.      //aktuelle Fenstergröße ermitteln
  8.      getClientRect(hWindow,rect);
  9.  
  10.      ClipSizeX:= oglStatus.clipSize;
  11.      ClipSizeY:= oglStatus.clipSize;
  12.  
  13.      //Seitenverhältnis des Weltkoordinatenbereichs an
  14.      //Viewport anpassen
  15.      if (ClipSizex > ClipSizeY) then
  16.        ClipSizeY:= ClipSizeX * rect.Bottom / rect.Right
  17.      else
  18.        ClipSizeX:= ClipSizeY * rect.Right / Rect.Bottom;
  19.  
  20.      glMatrixMode(GL_PROJECTION);
  21.      glLoadIdentity();
  22.  
  23.      //Ansichtstyp auswählen
  24.      if (oglStatus.bOrthogonal = true) then
  25.        glOrtho(-clipSizeX,clipSizeX,
  26.                -clipSizeY,clipSizeY,
  27.                oglStatus.nearPlane,
  28.                oglStatus.farPlane)
  29.      else
  30.        glFrustum(-clipSizeX,clipSizeX,
  31.                  -clipSizeY,clipSizeY,
  32.                  oglStatus.nearPlane,
  33.                  oglStatus.farPlane);
  34.  
  35.      glViewport(0,0,rect.Right,rect.Bottom); //(0,0,Breite,Höhe)
  36.  
  37.      glMatrixMode(GL_MODELVIEW);
  38.      glLoadIdentity();
  39.      gluLookAt(oglStatus.focalPoint.x,
  40.                oglStatus.focalPoint.y,
  41.                oglStatus.focalPoint.z,
  42.                oglStatus.sceneMP.x,
  43.                oglStatus.sceneMP.y,
  44.                oglStatus.sceneMP.z,
  45.                oglStatus.upVector.x,
  46.                oglStatus.upVector.y,
  47.                oglStatus.upVector.z);
  48.  
  49.      //Umgebungslicht
  50.      LModelAmbient[0]:= 0.5;
  51.      LModelAmbient[1]:= 0.5;
  52.      LModelAmbient[2]:= 0.5;
  53.      LModelAmbient[3]:= 1;
  54.  
  55.      glLightModelfv(GL_LIGHT_MODEL_AMBIENT,
  56.                     @LModelAmbient);
  57.  
  58.      glEnable(GL_DEPTH_TEST);
  59.      glShadeModel(GL_SMOOTH);
  60.      glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE);
  61.      //
  62.      glEnable(GL_COLOR_MATERIAL);
  63.      glLightModeli(GL_LIGHT_MODEL_AMBIENT,1);
  64.      glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,1);
  65. end;


sieht hier wer ein Mem-Leak?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 15:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Frage: Wenn ich mit getDC() von nem Panel den Device Context bekomme, muss ich den dann selber wieder schließen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 15:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Ok das war der Fehler, dank dem Tool habschs rausgefunden, is ein geiles Teil :-D
Hab einfach irgendwie angenommen, das die Teile den DC selbst verwalten und man den nicht selber freigeben muss, wenn man die Funktion benutzt, aber Pustekuchen ... . Naja wieder was gelernt :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 17:54 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wieso holst du dir überhaupt mehrfach das Handle?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 03, 2005 10:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
dachte das is ne Delphi-Funktion und das der DC einmal vorliegt und man mit getDC() immer nur ne Referenz bekommt. Is ja aber nicht so, der wird ja jedes mal neu angelegt ... .


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


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]