Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Hallo,
kennt jemand eine Möglichkeit den noch zur Verfügung stehenden Speicher auf der Grafikkarte zu ermitteln? Und zwar dachte ich dabei an so etwas wie VertexArrayObject. Wenn nicht mehr genügend Speicher vorhanden ist, dann wird ein null zurückgeliefert. Das möchte ich gerne sinnvoll verhindern.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich glaub das ist eine der am häuigsten gestellten Fragen, auf die die Antwort momentan leider noch nein lautet.Zumindest unter OpenGL gibts keine Möglichkeit, den noch zur Verfügung stehenden Grafikkartenspeicher zu ermitteln
Hoffentlich ändert sich das aber mit der Ankunft von OpenGL2.0, denn das wäre ein wirklich nützliches Feature.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ich habe befürchtet, dass du das sagen würdest! Schade eigentlich.
Aber ich habe auch gerade noch etwas gefunden. Das ist zwar eher nur ein schlechter Witz. Aber die Treiber schreiben irgendwo in die Registry die Größe vom dem Speicher hin. Allerdings sobald man wie ich von NVidia auf ATI wechselt kommt das wohl vollkommen durch einander. Und zwar hat Mike Lischke in seinen OpenGL Units ein Testprogramm beigelegt. Der zeigt unter anderem auch das an. Allerdings hatte er noch meine TNT2 angezeigt und nach dem Deinstallieren der Treiber (NV) habe ich wohl gar keine Grafikkarte mehr eingebaut.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Rein theoretisch kannst du die Größe des Grafikkartenspeichers unter OpenGL zumindest ungefähr ermitteln.Und zwar gibts die Funktion glAreTexturesResident() die dir sagt, ob sich eine geladene Textur im Grafikkartenspeicher befindet, oder in den Systemspeicher ausgelagert wurde.
Du kannst dir dann theoretisch ne Funktion schreiben, in der mittels einer Schleife solange Texturen (umkomprimiert, damit du deren Speicherverbrauch auf der Grafikkarte auch richtig ermitteln kannst) geladen werden, bis eben diese Funktion dir mitteilt, das eine Textur zum ersten mal im Systemspeicher gelandet ist.Wenn du dann richtig rechnest, hast du den ungefähren Speicherausbau der Grafikkarte ermittelt.Umso kleiner die Textur ist, die du in dieser Schleife lädst, desto genauer wird dein Ergebnis natürlich.Ideal wäre hier ne Textur mit ner Größe von einem Byte.
Wie gesagt ist das leider nur ne grobe Schätzung, und ausserdem gibts dann ja noch Grafikkartenhersteller wie Matrox, dies nicht nötig haben eine solche Funktion in ihren Grafikkartentreibern zu integrieren (war zumindest auf der G400 der Fall), so dass du auf diesen Grafikkarten nix Gescheites rausbekommst!
Mitglieder in diesem Forum: 0 Mitglieder und 10 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.