Question

Hé, j'ai une texture chargée avec glTextImage2D. Je veux obtenir la taille de la texture après avoir été chargé à la VRAM, que dois-je faire? Mon format interne est RGBA et le format de la texture varie.

Était-ce utile?

La solution

Cela peut être utile pour vous et vous pouvez probablement en déduire l'utilisation de la mémoire réelle de celle-ci. Cependant, je crois que cela est encore plutôt une approximation:

http://www.geeks3d.com/20100531/programming-tips-how-to-know-the-graphics-memory-size-and-usage-in-opengl/

(requête l'utilisation de mémoire totale de OpenGL en utilisant des extensions spécifiques NVIDIA ou ATI)

A noter également que de mon expérience, l'utilisation de la Approximation de la mémoire par calcul approximatif était généralement suffisant. Textures « devraient » être stockés soit 1,2 ou 4 composants sans frais généraux importants. Par conséquent, pour une texture WxH RGBA, calculer W * H * 4. Si vous stockez des textures flottantes (à savoir GL_RGBA32F), calculer W * H * 4 * 4. Pour Mip-cartes, ajouter (1/3) la consommation de mémoire supplémentaire. Il faut savoir cependant que - au moins à ma connaissance -. Mémoire de texture peut aussi fragment, peut-être vous laissant avec moins de mémoire disponible estimée

Autres conseils

GetTexLevelParameter , qui peut vous donner (pour chaque niveau):

  • Largeur et hauteur *
  • Profondeur
  • Format interne *
  • format compressé et la taille relative

(*) utilise ces paramètres pour le calcul de la taille de texture (pour le niveau spécifié).

L'utilisation de la mémoire de texture unique dépend des mipmaps générés. En effet, pour calculer correctement la mémoire utilisée par une texture unique, vous devez déterminer les mipmaps liés aux textures, et puis additionnez l'utilisation de la mémoire pour chaque niveau.

Le nombre de mipmap est déterminé par la spécification OpenGL en fonction de la cible de texture: tableaux de texture éléments a ses propres mipmaps fixés, chaque texture du visage cube a son propre ensemble de mipmap. La dimension des mipmaps sont réduit de moitié pour chaque niveau, jusqu'à ce qu'ils passe à 1. Dans le cas de la dimension ne sont pas puissance de deux, elles sont arrondies au nombre entier inférieur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top