Wie wird der gesamte Speicher in Bytes abgerufen, die von OpenGL in C ++ verwendet werden?

8

Wie bekomme ich den gesamten Speicher in Bytes, die von OpenGL in C ++ benutzt werden?

Ich baue eine OpenGL-Anwendung und der gesamte verwendete Speicher scheint zu steigen, ich kann die Informationen über den gesamten von Variablen & amp; Objekte, die von mir selbst erstellt wurden, aber nicht garantieren können, wie viel Speicher OpenGL für seine Variablen & amp; Objekte & amp; Texturen usw. Ist es also möglich, den Gesamtspeicher in Bytes zu erhalten, die von OpenGL in C ++ verwendet werden?

    
jondinham 04.10.2011, 00:18
quelle

1 Antwort

7

Im Allgemeinen nicht. OpenGL ist letztlich eine Hardware-Abstraktion. Und OpenGL bietet einfach keine Möglichkeit, diese Art von Informationen zu erhalten.

Es gibt herstellerspezifische Erweiterungen, die Ihnen Fragen stellen, aber was Sie zurückbekommen, hängt von der Architektur ab. AMD-Hardware bietet die Erweiterung ATI_meminfo . Er unterteilt den Speicher in Objekttypen: Pufferobjekte, Texturen und Renderpuffer.

NVIDIA bietet die experimentelle Erweiterung NVX_gpu_memory_info. Es gibt keine Informationen in der Registrierung, wie man es benutzt, also kann ich dich mit nichts verbinden.

In jedem Fall ist der effektivste Weg, um zu wissen, was die GPU verwendet, nur sie selbst zu verfolgen. Verwenden Sie immer interne Bildformate mit Größen ; Das bedeutet, dass Sie eine ziemlich gute Schätzung der Speicherkapazität einer Textur berechnen können. Das Gleiche gilt für Pufferobjekte usw.

Sie erhalten keine genauen Zahlen, da Auffüllen, Ausrichtung und Ähnliches Sie verwirren können. Aber du wirst etwas ziemlich Anständiges bekommen.

    
Nicol Bolas 04.10.2011, 02:11
quelle