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.