Aunque la postura oficial sigue siendo "no necesitas saber, no quieres saber, y de todos modos no te ayudaría", afortunadamente al menos dos IHV han mostrado un poco más de conocimiento últimamente y ofrecen extensiones para consultar esa información:
lo bueno de estas extensiones es que tienen un mínimo común denominador, que es justo lo que la mayoría de la gente necesita, y que no es necesario para consultar soporte de extensión o hacer algo especial, ya que ambos trabajan a través de glGetIntegerv
.
En el caso más sencillo, puede inicializar una matriz de 4 números enteros a cero (o algún valor mínimo predeterminado que asumirá en caso de que las extensiones no funcionen), luego llama a glGetIntegerv
dos veces (con GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX
y TEXTURE_FREE_MEMORY_ATI
, respectivamente), y finalmente llame al glGetError
para borrar el estado de error. glGetIntegerv
no modifica la memoria apuntada si falla, ni se cuelga o cualquier otra cosa mala - simplemente establece el estado de error en GL_INVALID_ENUM
.
Ambas extensiones devuelven un valor en la primera posición de la matriz, la ATI también devuelve algunos valores en las otras 3.
n.b .: glAreTexturesResident
no se ha admitido durante casi una década en hardware convencional, de la misma manera que las prioridades de textura. El mantra común es que el guionista sabe mucho mejor que usted de todos modos.
Solo agréguela aquí para que los que visiten aquí sepan: 'glAreTexturesResident' está en desuso en el perfil principal, por lo que no es prudente utilizarlos en un programa OpenGL moderno. – legends2k