Registriert: Do Jul 23, 2009 04:33 Beiträge: 157
Programmiersprache: Turbo Delphi Pro
Hallo, ich bin noch ganz neu im Thema OpenGL.
Folgende Frage hätte ich: ich benutze Turbo Delphi, und bräuchte einen Code oder ein Tool, welches mir die Größe des Grafikspeichers sowie die aktuelle Belegung anzeigt. Und zwar damit ich beim Entwickeln meiner Spiele "ein Gefühl" dafür bekomme, ob alles im Lot ist, oder ob ich das Konzept anders planen sollte. Konkret gehts da im Display-Listen, und einfach die Frage ob ich die Menge und/oder die größe besagter Listen reduzieren oder ausbauen sollte. Also wäre Prima wenn jemand ein solches Tool oder einen Codeschnipsel kennt, mit dem man den Zustand seiner Grafikkarte im laufenden Betrieb überwachen kann
//edit und neben Display-Listen gehts auch noch um Texturen usw. halt alles was den Grafikspeicher belegen könnte.
Ich weiß nicht genau, wie du es mit den Texturen und Listen machst, aber so einfach ist das imho nicht. Ich würde probieren selbst zu rechnen. Intern rechnet dein Treiber Displaylisten wahrscheinlich in VBOs um, also wenn du eine Liste hast, wo jeder Punkt nen Texel (UV-Koordinate einer Textur), eine Position (Vertex), eine Normale (für Licht) und eine Farbe, kommt pro Punkt (2+3+3+3)*4 Byte = 44 Byte zusammen. Geh aber immer von Optimierungen zu Lasten des Speichers aus und rechne lieber ein paar Byte drauf. ^^ Bei Texturen geht es, denke ich, sogar einfach. X*Y*Anzahl der Bytes pro Pixel (32 Bit = 4 Byte, aber das weißt du ja sicherlich, bist ja nur bei OpenGL neu ).
Ansonsten, falls du es noch nicht selbst gelesen hast, achte drauf, dass deine Texturen Potenzen von 2 groß sind und das gleiche Verhältnis haben. Also 256x256 oder 1024x1024. Und pack eher viel in eine Textur als viele kleine zu haben! Texturwechsel sind relativ langsam. Mach also lieber z.B. 16 Sprites a 128x128 in eine 512x512-Texture als 16 128x128-Texturen.
Viel Erfolg mit euren Projekt und willkommen nochmal im Forum.
Ziz
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Schau mal auf der Website deines Grafikkartenherstellers. Dort sollte es in der Entwicklersektion einige Performance-Tools geben. Die zeigen bestimmt auch den Grafikspeicher an.
Also das Programm "RivaTuner" kann die Belegung des Grafikkartenspeichers anzeigen, und noch paar mehr Sachen. Außerdem es von NVidia ein sogenanntes PerfKit, das ist aber hauptsächlich für DirectX, wenn das nicht geändert wurde. Das Zeug was da für OpenGL dabei war hab ich nicht so richtig zum laufen gebracht, aber es gibt da noch ein Open-Source Projekt namens "PerfGraph" dafür, mit dem man sich relativ unkomplizert die Auslastung des Speichers und auch Sachen für Shader anzeigen lassen kann.
Bei ATI kenn ich mich nicht aus, weil ich da keine GraKa von hab'.
Beim RivaTuner ist das Anzeigen aber ein bischen versteckt (oder ich übersehe das offensichtliche):
Alos man startet das Programm "RivaTuner.exe", dann kommt so ein Fenster mit mehreren Tabs. Im "Main"-Tab gibt es bei "Target adapter" unter der Auswahlbox ein Feld wo ein Button drin ist (neben "Customize"). Den natürlich drücken. Dann kommen ein paar mehr Buttons, einer davon steht für Hardware-Monitoring.
Dann müssten schonmal ein paar Graphen angezeigt werden. Der mit dem Video-RAM ist aber wahrscheinlich noch nichtz dabei. In dem Fall muss man auf "Setup" unten rechts klicken. Dann kann man in dem neuen Fenster unten links auf "Plugins" drücken und ein Häkchen bei "VidMem.dll" reinmachen. Dann "OK" und in der Liste unter "Data sources" müsste dann auch ein Punkt "Videomemory usage" erscheinen. Das ist das was du suchst. Also auch nen Haken reinhauen und fertig.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Meines Wissens hatten wir das Thema schon x mal und bei dem letzten mal wurde ein Link zu einer Extension gelinkt, welche ein etwas genaueren speicherverbrauch anzeigen kann.
Das Problem bei der Thematik ist, dass selbst NV und ATI sagen, dass es nicht trivial ist und die werte die man bekommt keines wegs korrekt sind.
Wenn die Grafikkartentreiber los legen, dann liegen neben den texturen,displaylisten auch noch ne menge zeug zum verwalten der daten, speichermanager und so weiter im vram und das kann man nicht so ohne weiteres raus bekommen. Daher sind auch die Tools nur genauerere Schätzungen.
http://www.opengl.org/registry/specs/ATI/meminfo.txt Eigentlich ein Trauerspiel aber im Prinzip kann man ja selber nachrechnen.
Du rechnest einfach die größe deiner übergebenen Daten aus und achtest darauf.
Diese Daten könntest du dann auch Problemlos visualisieren und musst nichts externes benutzen.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Jul 23, 2009 04:33 Beiträge: 157
Programmiersprache: Turbo Delphi Pro
Ja okay, ich hatte gehofft dass es da ganz einfache Tricks oder Tools gibt, da dem nicht so ist werd ich eben weiter im trüben fischen trotzdem danke an alle
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen. (Koreanisches Sprichwort)
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.