2017-07-27 1 views
0

De l'Khronos ref pages:WebGL: l'utilisation d'un format de texture monocanal permet-il réellement d'économiser de la mémoire (texture)?

GL_LUMINANCE: Chaque élément est une valeur de luminance. Le GL convertit en virgule flottante, puis assemble en un élément RVBA en reproduisant la valeur de luminance trois fois pour le rouge, le vert et le bleu et la fixation 1 pour alpha.

Est-ce que cela s'applique également à WebGL? Si oui, cela signifie que l'utilisation de textures formatées avec moins de canaux tels que LUMINANCE ne pas sauver VRAM par rapport à l'utilisation RGBA?

Et que diriez-vous de RAM?

Répondre

2

Est-ce à appliquer WebGL aussi?

Oui, il ne

que cela implique que l'utilisation de textures formatées avec des canaux moins tels que LUMINANCE ne sauve pas VRAM par rapport à l'utilisation RGBA

Non, tout cela est spécifique de mise en œuvre (et certaines implémentations choisissent effectivement d'étendre les données à RGBA avant de télécharger) l'expansion devrait se produire à la volée, fournissant simplement une seule et même valeur pour chaque composant de couleur lors de l'échantillonnage à partir d'une telle texture dans un shader.

Et que diriez-vous de RAM?

Une fois que vous appelez texImage2D les données sont téléchargées à VRAM et non conservé dans la mémoire vive aussi longtemps que vous ne le faites pas (par exemple. En se tenant à une référence des données).

0

GL_LUMINANCE a été déprécié et supprimé dans OpenGL 3.2. De nos jours, vous spécifiez explicitement le format interne avec des enums comme GL_R8. Les implémentations allouent leur stockage interne au format spécifié (même si cette garantie n'existe pas dans la spécification OpenGL, conformément à la règle as-if). Je recommande de ne pas utiliser GL_LUMINANCE dans WebGL non plus. Utilisez simplement le format interne explicite et développez-le dans le shader selon vos besoins, ou changez de texture.

+0

Ce qui est seulement possible avec WebGL ** 2 ** ... –