glVertexAttribPointer normalization


11

glVertexAttribPointer (indice, dimensione, tipo, normalizzato, falcata, puntatore);

Se uso type = GL_UNSIGNED_BYTE e normalizzato = GL_TRUE

come è normalizzato? i dati sarebbero divisi per 256 per la normalizzazione? o? Ciò significherebbe che non c'è modo di avere un valore normalizzato di '1.0f' ..

Risposte:


13

Dal manuale,

Se impostato su GL_TRUE, normalizzato indica che i valori memorizzati in un formato intero devono essere mappati nell'intervallo [-1,1] (per valori con segno) o [0,1] (per valori senza segno) quando si accede e convertiti in virgola mobile.

Presumo che ciò significhi che, con un tipo a 8 bit senza segno, 0 verrebbe mappato su 0.0f e 255 mapperebbe su 1.0f.


Ciò significa che è diviso per 255?
— Jonathan,

A destra, il byte senza segno ha un intervallo compreso tra 0 e 255. Quindi, se si supera 0xFF (che è uguale a 255), si otterrà 1.0f.
— notlesh

7
... Hai mai suonato l'originale Zelda? La quantità massima di rubini che potresti contenere era 255, non 256;)
— notlesh

So che i byte senza segno vanno solo a 255 .. Mi stavo solo chiedendo perché sembrava logico che la GPU si dividesse per una potenza di due
— Jonathan

Mi chiedevo qualcosa di simile. Potrebbe esserci una conversione efficiente da uint_8 a float che non fa molto di più che spostare i bit in giro, ma non sono io a chiedere ... Qualcuno che sa di più sulle FPU potrebbe intervenire?
— notlesh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.