Normalisation de glVertexAttribPointer


11

glVertexAttribPointer (index, taille, type, normalisé, foulée, pointeur);

Si j'utilise type = GL_UNSIGNED_BYTE et normalisé = GL_TRUE

comment est-il normalisé? les données seraient-elles divisées par 256 pour la normalisation? ou? Cela signifierait qu'il n'y a aucun moyen d'avoir une valeur normalisée de '1.0f'.

Réponses:


13

Du manuel,

S'il est défini sur GL_TRUE, normalisé indique que les valeurs stockées dans un format entier doivent être mappées à la plage [-1,1] (pour les valeurs signées) ou [0,1] (pour les valeurs non signées) lors de leur accès et de leur conversion en point flottant.

Je suppose que cela signifie qu'avec un type 8 bits non signé, 0 correspondrait à 0,0f et 255 correspondrait à 1,0f.


Cela signifie donc qu'il est divisé par 255?
Jonathan

À droite, l'octet non signé a une plage de 0 à 255. Donc, si vous avez passé 0xFF (qui est égal à 255), vous obtiendrez 1.0f.
2011

7
... Avez-vous déjà joué le Zelda original? Le nombre maximum de rubis que vous pouviez contenir était de 255, pas 256;)
notlesh

Je sais que les octets non signés n'atteignent que 255 .. Je me demandais simplement parce qu'il semblait logique que le GPU se divise par une puissance de deux
Jonathan

Je me demandais quelque chose de similaire. Il peut y avoir une conversion efficace de uint_8 en float qui ne fait pas beaucoup plus que déplacer des bits, mais je ne suis pas le seul à demander ... Quelqu'un qui en sait plus sur les FPU pourrait sonner?
2011
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.