glVertexAttribPointer 정규화


11

glVertexAttribPointer (인덱스, 크기, 유형, 정규화, 보폭, 포인터);

type = GL_UNSIGNED_BYTE를 사용하고 normalized = GL_TRUE를 사용하면

어떻게 정규화됩니까? 정규화를 위해 데이터를 256으로 나눕니 까? 또는? 이는 정규화 된 값 '1.0f'를 가질 방법이 없음을 의미합니다.

답변:


13

매뉴얼에서

GL_TRUE로 설정하면 정규화는 정수 형식으로 저장된 값이 액세스되고로 변환 될 때 [-1,1] (서명 된 값의 경우) 또는 [0,1] (서명되지 않은 값의 경우) 범위에 맵핑됨을 나타냅니다. 부동 소수점.

부호없는 8 비트 유형의 경우 0은 0.0f에 매핑되고 255는 1.0f에 매핑됩니다.


255로 나눈다는 의미입니까?
Jonathan

부호없는 바이트의 범위는 0-255입니다. 따라서 0xFF (255와 같음)를 전달하면 1.0f가됩니다.
notlesh

7
... 원래 젤다를 연주 한 적이 있습니까? 보유 할 수있는 최대 루비의 양은 256이 아니라 255입니다.)
notlesh

부호없는 바이트는 255로만 나간다는 것을 알고 있습니다. GPU가 2의 거듭 제곱으로 나누는 것이 논리적 인 것처럼 보였기 때문에 궁금했습니다.
Jonathan

나는 비슷한 것을 궁금해했다. uint_8에서 float 로의 효율적인 변환이있을 수 있습니다. 비트를 이동시키는 것 이상을 수행하지는 않지만 물어볼 것은 아닙니다 .FPU에 대해 더 잘 아는 사람이 차임 할 수 있습니까?
notlesh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.