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で割ったということですか。
ジョナサン

右、符号なしバイトの範囲は0〜255です。したがって、0xFF(255に等しい)を渡した場合、1.0fになります。
notlesh

7
...オリジナルのゼルダをプレイしたことがありますか?保持できるルビーの最大量は256ではなく255でした;)
notlesh

符号なしのバイトは255にしか到達しないことはわかっています
ジョナサン

私は似たようなものを考えていました。uint_8からfloatへの効率的な変換があり、ビットをシフトする以上のことはありませんが、私が質問するのは私ではありません... FPUについて詳しく知っている人がいるのでしょうか。
notlesh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.