テクスチャに渡すデータ

texture-data.png

テクスチャに画像データを渡すときglTexImage*Dで渡しますが、

glTexImage2D ( GL_TEXTURE_2D, 0, GL_LUMINANCE, width, height, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, texturedatapointer);

このときどんなデータが渡せるのでしょうか?
つまり、後ろから2番めの引数に渡せるのは何か?に着目します。
リストアップするとこうなります。
type定数
GL_UNSIGNED_BYTE unsigned char
GL_BYTE char
GL_BITMAP glBitmap()参照
GL_UNSIGNED_SHORT unsigned short
GL_SHORT short
GL_UNSIGNED_INT unsigned int
GL_INT int
GL_FLOAT float
GL_UNSIGNED_BYTE_3_3_2
GL_UNSIGNED_BYTE_2_3_3_REV
GL_UNSIGNED_SHORT_5_6_5
GL_UNSIGNED_SHORT_5_6_5_REV
GL_UNSIGNED_SHORT_4_4_4_4
GL_UNSIGNED_SHORT_4_4_4_4_REV
GL_UNSIGNED_SHORT_5_5_5_1
GL_UNSIGNED_SHORT_1_5_5_5_REV
GL_UNSIGNED_INT_8_8_8_8 int
GL_UNSIGNED_INT_8_8_8_8_REV
GL_UNSIGNED_INT_10_10_10_2
GL_UNSIGNED_INT_2_10_10_10_REV

符号付きの値を渡した場合、シェーダでの扱い

符号付きのデータを渡しても、シェーダ上でテクスチャとして扱うときはすべて0.0-1.0に正規化される。
え、ちょっと困る

vec4 src=texture3D(voltexture,uvw);
Bibliography

サポートサイト Wikidot.com