OpenGl Fragen
-
FzK_Pablo schrieb:
Hallo,
Wenn ich alles auskommentiere bis auf:
int DrawInterface(const char *menucaption) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(0.0f,0.0f,-1.0f); glBegin(GL_QUADS); glColor3f(0.1f,0.1f,0.1f); glVertex2f(float(-1.0), float(1.0 )); glVertex2f(float( 1.0), float(1.0 )); glVertex2f(float( 1.0), float(0.35 )); glVertex2f(float(-1.0), float(0.35 )); glColor3f(0.1f,0.1f,0.15f); glVertex2f(float(-0.12), float(0.37)); glVertex2f(float(0.12 ), float(0.37)); glVertex2f(float( 0.1 ), float(0.33)); glVertex2f(float(-0.1 ), float(0.33)); glEnd(); glColor3f(1.0f,0.0f,0.0f); glRasterPos2f(-0.03f,0.34f); glPrint(menucaption, 35); return true; }
und:
int checkmsg(void) { if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { if (msg.message==WM_QUIT) { keys[VK_ESCAPE] = true; } else { TranslateMessage(&msg); DispatchMessage(&msg); } } return true; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { if (!CreateGLWindow("test",1680,1050,32,fullscreen)) { return 0; } while (!keys[VK_ESCAPE]) { checkmsg(); DrawInterface("Main Menu"); Sleep(100); SwapBuffers(hDC); } return true; }
dann erhöht sich die Speicherauslastung jede Sekunde um etwa 2000 kb/s.
Die Zahl bei: glPrint(menucaption, 35); gibt nur die Größe der Schrift an.
Im kompletten Zustand würde ich einfach nur weitere Boxen und Schriften ausgeben lassen, also denke ich, es ist unnötig die entsprechenden Zeilen auch noch hier hinzuschreiben.
vielleicht generierst du displaylisten ohne sie frei zu geben oder sowas?
Was sind displaylisten?
Gruß, Pablo
-
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
Pro Frame fallen erheblich mehr als ein Event an, darum mach' aus dem if mal ein while.
-
hi hellihjb,
das ist eine gute Idee und ich habe diese Variante auch schon ausprobiert, aber diese hat leider auch nichts an dem Speicherproblem geändert. Hättest du einen anderen Vorschlag?
Gruß,
Pablo
-
FzK_Pablo schrieb:
hi hellihjb,
das ist eine gute Idee und ich habe diese Variante auch schon ausprobiert, aber diese hat leider auch nichts an dem Speicherproblem geändert. Hättest du einen anderen Vorschlag?
Gruß,
PabloHast du irgendwo ein new() oder ein malloc()? Das sind die einzigen Funktionen in C/C++ die Speicher allokieren koennen.
-
Hi DEvent,
ich habe nichts dergleichen in meinem Quellcode. Ich denke, die Speicherauslastung kommt daher zustande, dass ich mir immer wieder Objekte wie Rechtecke ausgeben lasse. Kann es sein, dass er die Alten in den Arbeitsspeicher schreibt?
Gruß,
Pablo
-
Ich denke, die Speicherauslastung kommt daher zustande, dass ich mir immer wieder Objekte wie Rechtecke ausgeben lasse
Und man hat Dich auch mehrmals darauf hingewiesen, dass das nicht sein kann.
-
Das weiß ich, aber wenn ich mir keine Objekte ausgeben lasse, dann erhöht sich die Speicherauslastung nicht.
So. Ich habe jetzt das Problem gelöst. Es lag an der funktion glPrint;
Danke für eure Hilfe,
Gruß
pablo