2011-10-04 10 views
8

¿Cómo obtener la memoria total en bytes utilizada por OpenGL en C++?¿Cómo obtener la memoria total en bytes utilizada por OpenGL en C++?

Estoy construyendo una aplicación OpenGL y la memoria total utilizada parece estar aumentando, puedo obtener la información sobre la memoria total utilizada por las variables & objetos creados por mí mismo pero no puedo garantizar la cantidad de memoria que OpenGL está usando sus variables & objetos & texturas, etc. Entonces, ¿es posible obtener la memoria total en bytes utilizada por OpenGL en C++?

Respuesta

7

En general, no es así. OpenGL es, en última instancia, una abstracción de hardware. Y OpenGL simplemente no proporciona una manera de obtener ese tipo de información.

Existen extensiones específicas de proveedores que le darán formas de preguntar, aunque lo que obtenga depende de la arquitectura. El hardware de AMD proporciona el ATI_meminfo extension. Se divide memoria en tipos de objetos: objetos de búfer, texturas y renderbuffers.

NVIDIA proporciona la extensión experimental NVX_gpu_memory_info. No hay información en el registro sobre cómo usarlo, así que no puedo vincularlo con nada.

En cualquier caso, la manera más efectiva de saber qué está usando la GPU es simplemente hacer un seguimiento de la misma. Siempre use internal image formats with sizes; esto significa que puede calcular una estimación bastante buena de la cantidad de memoria que ocupa una textura. Lo mismo ocurre con los objetos de memoria intermedia y demás.

No obtendrá los números exactos, ya que el relleno, la alineación y similares pueden confundirlo. Pero obtendrás algo bastante decente.

+0

Creo que también se tendrán en cuenta los mipmaps de texturas para la estadística de uso de la memoria. – Luca

+0

+1 Buena respuesta. De hecho, no respondí esta pregunta porque tuve la impresión de que el OP quiere saber la memoria de la CPU utilizada por la implementación de OpenGL (controlador). De lo contrario (si se refiere a la memoria de la GPU) no sé cómo debería haber visto que "la memoria total utilizada parece estar aumentando". –

+0

estoy usando mipmaps y esto debería llevar la memoria un 50% más que el uso de texturas de mapa de bits. pero GL parece usar RAM y Video RAM – jondinham

Cuestiones relacionadas