2017-04-13 5 views
2

glTeximage2Ddocumentationを読みましたが、少し混乱しています。この場合、OpenGLはテクスチャ値を[0,1]に固定します。私は私の質感にGL_REDとしてフォーマットを使用していますし、ドキュメントは言う:OpenGLテクスチャクランプ

形式は、データの各元素の組成を決定します。 は、次のいずれかの象徴的な値をとることができます。

GL_RED各要素は単一の赤色コンポーネントです。 GLはそれを浮動小数点に変換し、緑と青に0、アルファに1をつけてRGBA要素にアセンブルします。各コンポーネントは[0,1]の範囲にクランプされます。

これは基本的に、OpenGLが内部形式に関係なく値を固定するとは言いませんか?

glTexImage2D(GL_TEXTURE_2D, 0, GL_R16F, width, height, 0, GL_RED, GL_FLOAT, data);

OpenGLはGL_R16Fとして内部形式で自分のデータをクランプないを行いますよう

しかし、私は私のテクスチャをアップロードするとき。しかし、内部フォーマットをGL_R16に変更すると、クランプされます。ドキュメントには、形式のクランプに関する情報はどこにありますか?

+0

誤って古いドキュメントへのリンクを貼り付けました。 OpenGL 4 – novalain

+0

を指すようにリンクが更新されました。カラーコンポーネントグループの場合、テクスチャ の内部形式が符号付きまたは符号なしの固定小数点である場合、コンポーネントはそれぞれ[-1、1] または[0、1]に固定されます。深度成分グループの場合、深さ値は を[0、1]にクランプする。それ以外の場合は、値は変更されません。 OpenGL 4.4(Core Profile) - 2014年3月19日p183-184 –

+0

通常のテクスチャ(GL_R16)には、固定小数点データが格納されています。 GL_R16Fは浮動小数点なので、変更されていません –

答えて

1

OpenGL Wiki about Image Format には、これに関する詳細情報が含まれています。

OpenGLには、カラーフォーマットの列挙型を記述するための特定の構文があります。それは次のようになります。

GL_[components​][size​][type​] 
  • :いいえ型の接尾辞は、符号なしの正規化された整数フォーマットを意味しません。
  • _SNORM:符号付き正規化整数形式。
  • F:浮動小数点。したがって、GL_RGBA32Fは浮動小数点形式で、各コンポーネントは32ビットのIEEE浮動小数点値です。
  • I:符号付き整数フォーマット。したがって、GL_RGBA8Iは、4つの成分のそれぞれが[-128, 127]の整数である符号付き整数フォーマットを与える。
  • UI:符号なし整数フォーマット。値は、整数サイズの場合は[0, MAX_INT]になります。画素の相関に
OpenGL Wiki about Pixel Transfer

はそれを含んで転送します。

データがイメージに転送されるとき、ピクセル値は浮動小数点または整数値に変換されます。イメージフォーマットが正規化されている場合、書き込まれた値は[0、1]にクランプされ、正規化されます。画像フォーマットが整数である場合、積分入力値はそのままコピーされる。

+0

彼は[ピクセル転送形式](https://www.khronos.org/opengl/wiki/Pixel_Transfer_Format)について話しています。これは別のWikiページです。 –

+1

@ NicolBolasは正しいが、*フォーマット変換*では、正規化はイメージフォーマットに基づいていると述べている。したがって、どのようにして他のwikiページに終わるか。私が間違っていない限り? – Vallentin