Performance
-
1. Falls ihr mich falsch versteht. Mein Programm läuft dauerhaft mit einer CPU-Auslastung von 100%. Auf gut Deutsch ich kann damit nicht arbeiten. Und da es sich um eine Tastatur handelt, wäre es vll ganz gut wenn man sie auch benutzen kann.
2. In der Render-Funktion habe ich schön längst sleep(10) eingebaut aber es bringt gar nichts
3. Ich habe nicht das Gefühl das bei dem Freund von mir was falsch läuft, da man bei ihm perfekt arbeiten kann und bei mir rukelt halt alles etc..
-
Kann es sein, dass du ne Riva TNT und nen Pentium 1 Prozessor mit 90 Mhz hast ?
-
1,7 GH
1 GB RamDürfte reichen wie schon gesagt die andere Tastatur von dem Freund läuft. Und damit meine ich bei mir am PC. Und weil meine sehr fast identisch ist, dürfte da ja nicht so ein großer unterscheid sein
-
Lenni schrieb:
1,7 GH
1 GB RamDürfte reichen wie schon gesagt die andere Tastatur von dem Freund läuft. Und damit meine ich bei mir am PC. Und weil meine sehr fast identisch ist, dürfte da ja nicht so ein großer unterscheid sein
Evtl. hast du keine (OpenGL) Treiber installiert? Oder einen Hardware-Defekt?
und wie hellihjb schon gefragt hat: wann/wie/wie oft wird denn die Draw-Funktion aufgerufen?
Und ein ganz allgemeiner Tipp: benutz mal einen Profiler
-
Was meinst du mit Opengl Treiber? Also ich habe schon andere Programme geschrieben, die alle liefen. Nur wenn ich Texturen lade.
Und zu den draw-Funktionen.
Also die gesamte Tastatur wird einmal gezeichnet in der Main und zwar in Renderteil wo sie auch hingehört. Die Tasten werden auch einmal auf die Tastatur gezeichen genau wie die Tasten.
Hardware-Defekt kann es wohl auch nicht sein. Ansonsten würden doch die anderen Programme nicht laufen mit Texturen die ich von anderen habe.
Und was meinst du mit Profiler?
-
Die OpenGL-Funktionen stellt normalerweise dein Grafikkarten-Treiber bereit, nur wenn dieser nicht installiert ist, stellt Windows die Funktionen bereit. Natürlich ist dies dann meist langsamer usw.
-
Gut ja stimmt. Aber ich werde wohl welche haben, wenn schon die anderen Programme mit Grafiken super funktionieren und nur meine nicht. Da muss es doch an einem Quellcode Problem liegen und nicht etwa an den Treibern oder PC selber.
Der PC sucht sich ja nicht aus welchen Coder er mag und Reesourcen zur Verfügung stellt und anderen nicht.
-
Lenni schrieb:
Gut ja stimmt. Aber ich werde wohl welche haben, wenn schon die anderen Programme mit Grafiken super funktionieren und nur meine nicht. Da muss es doch an einem Quellcode Problem liegen und nicht etwa an den Treibern oder PC selber.
wenn du etwas verlangst was deine hardware nicht liefern kann, schaltet opengl eventuell in einen emulationsmodus.
welche graka hast du? frag bei opengl den treibernamen ab (gibt funktionen die dir nen string mit namen liefern, ich weiss es gerade nicht auswendig)Der PC sucht sich ja nicht aus welchen Coder er mag und Reesourcen zur Verfügung stellt und anderen nicht.
er stellt es dem zu verfuegung bei dem er es kann.
-
achso okay hmm mal gucken
öhm meine Grafigkarte is ATI MOBILITY RADEON X300
-
http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getstring.html
bzw
http://www.opengl.org/resources/faq/technical/extensions.htm
kann dir helfen rauszufinden ob du hardwaresupport hast oder emuliert wirst.
noch ein einfacher tests ist bilineares filtering bei den texturen auszuschalten, die emulierte version wird dann sehr viel schneller laufen, wenn es auf hardware laeuft wird es gleich langsam bleiben oder sogar ein wenig langsammer sein.
-
das ist aber alles sehr hypothetisch, denn anhand des gezeigten source-codes ist gar nicht ersichtlich in welchen intervalen ein redraw stattfindet.
falls das permanent passiert ist die auslastung zwangslaeufig maximal.Ein guter Punkt. Hast du VSync deaktiviert, wenn ja, dann läuft dein Programm zwangsläufig mit 100% Auslastung.
Andere Frage: Du benutzt doch hoffentlich Texturen der Größe 2^n? Andere Größen werden nämlich nur von neueren Grafikkarten unterstützt, die Extension dafür heißt GL_ARB_texture_non_power_of_two...
Grüße
Martin
-
Okay da werde ich mal nachgucken. Danke!
Öhm doofe Frage.. wo kann ich das VSync deaktivieren? Kp wo das steht.
Und zu der Größe. Ja ich verwende die richtige
-
Lenni schrieb:
Okay da werde ich mal nachgucken. Danke!
Öhm doofe Frage.. wo kann ich das VSync deaktivieren? Kp wo das steht.
Und zu der Größe. Ja ich verwende die richtigeEr meinte das VSync bei dir deaktiviert sein koennte und es deswegen mit 100% laeuft. wenn VSync an ist, stallt die graphikkarte bis sie das frame flippen kann und die auslastung kann sinken.
bei opengl ist wohl die einzig sichere methode es in den treibereinstellungen zu aktivieren (afaik sind alle anderen methoden nur 'hinweise' die der treiber nicht befolgen 'muss', eben weil sie z.b. in den treibereinstellungen anders gesetzt sein koennen).
-
Wo finde ich denn dieses VSyns. Ich habe schon alle meine Daten der Grafikkarte angeguckt aber nichts gefunden.
-
Du brauchst schon das ATI Catalys Control Center...
Dort dann nach "Wait for vertical refresh" suchen und entsprechend einstellen.MfG