1

XCodeに含まれる「OpenGL ES Programming Guide for iOS」ドキュメントの「Best Practices for Working with Vertex Data」セクションの「Use the Smallest Acceptable Types for Attributes」という見出しの下に、

2 または 4 の unsigned バイト (GL_UNSIGNED_BYTE) または unsigned short (GL_UNSIGNED_SHORT) を使用してテクスチャ座標を指定します。

私は少し困惑しています。ほとんどの場合、テクスチャ座標は < 1 であり、小数値を表すには float が必要になると思いました。unsigned bytes または unsigned short をどのように使用しますか? シェーダーで 255 で割りますか?

4

1 に答える 1

3

を使用GL_UNSIGNED_BYTEするnormalizedGL_TRUE、 , を (たとえば)glVertexAttribPointerに渡すことになります。これは、渡す値が 0 から 1 の間ではなく、その全範囲 (0 から 255 など) から正規化された値に正規化する必要があることを示します。シェーダーに渡される前に 0 から 1 の範囲。(詳細については、OpenGL ES 2.0 仕様のセクション 2.1.2 を参照してください)。

つまり、符号なしバイトなどの整数型を渡す場合は、「正規化された」値をGL_TRUE使用し、その型の全範囲 (0 から 255 など) を使用するため、値 127 は浮動小数点とほぼ同等になります。 0.5。

于 2012-07-04T21:00:37.460 に答える