Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

05.01.2005, 21:26

VRAM-Speicherverbrauch feststellen

Hi,

gibts ne möglichkeit rauszufinden, wieviel vram meine applikation
wirklich verbraucht?
ich mein okay so pi*daumen kann man das auch ausrechnen
aber mich würde vorallem interessieren wieviel speicher meine
texturen tatsächlich mit allen mipmap-leveln in anspruch nehmen.

danke

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

2

05.01.2005, 22:41

Wenn Du ne nVidia Karte hast, kannst Du nvPerfHud nehmen.
"Games are algorithmic entertainment."

3

06.01.2005, 01:23

Kannst es aber auch ausrechnen. Das ist nicht schwer. Bekommst allerdings nur einen max. Wert und keinen aktuellen Wert.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

MannyDasMammut

Treue Seele

Beiträge: 76

Wohnort: Baden - Würtemberg / Achern

Beruf: Schüler

  • Private Nachricht senden

4

07.01.2005, 00:20

Hallo geht auch so:

Du speicherst einfach ganz am Anfang den Wert als Referenz und ziehst den anderen dann immer ab so:

UINT refmem = g_p_d3dd->GetAvailableTextureMem();


In Da wo du Frameszählst:

actmemverbrauch = refmem - g_p_d3dd->GetAvailableTextureMem();
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

5

07.01.2005, 02:31

hey cool die funktion kenn ich gar net. danke!

6

07.01.2005, 12:28

hm...komische funktion:

habs gradmal ausprobiert. also in der docu steht
das das ergebnis auf nächste mb aufgerundet wird.
die zahl die er liefert ist aber sicher nicht in mb
ich würd eher auf byte wetten. aber selbst dann.
in mb um gerechnet hab ich bevor ich auch nur eine textur laden
289 mb. wie soll das gehen bei 256 mb vram?

7

07.01.2005, 16:22

hast auch beachtet das 1MB == 1024KB ist?
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

8

08.01.2005, 12:41

jo hab ich:

sprintf(str, "MB-remain: %f", (float)device->GetAvailableTextureMem()/ (1024*1024));

müsse mir mb's liefern richtig?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

08.01.2005, 20:55

evtl. zählt der da den AGP ram auch dazu!?

obwohls eine komische zahl is...und laut doku sollten da mb rauskommen ???

10

09.01.2005, 01:02

Hab es bei mir auch mal getestet und ich bekomme exakt 243.269.632Byte raus. Das entspricht exakt 232MB. Es ist also klar das die Methode immer volle MB liefert. Nur gibt sie das Ergebnis in Byte aus. Naja...warum auch immer das so ist, bleibt ein Geheimnis der Programmierer.

Das Ergebnis mag auf den ersten Blick falsch sein. Weil meine Graka nur 128MB Speicher hat. Allerdings hab ich auch 128MB AGP Speicher freigegeben. Macht nach Adam Riese 256MB.

Der AGP Speicher ist so ausgelegt das er wie VRAM behandelt werden kann. Das ist wohl der Grund warum er mitgemessen wird.

Dadurch kann man folgende Rechnungen aufstellen:
AGP Speicher = Erg - VRAM
Speicherverbrauch VRAM = (VRAM + AGP Speicher) - Erg

Erg == IDirect3DDevice9::GetAvailableTextureMem();

Die Methode liefert wieviel Speicher noch übrig ist, nicht wieviel Speicher schon verbraucht wurde. Sonst ist der Name 100% falsch gewählt :)
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige