次のようなものを使用して、ホスト側のテクスチャを OpenGL にアップロードしています。
GLfloat * values = new [nRows * nCols];
// initialize values
for (int i = 0; i < nRows * nCols; ++i)
{
values[i] = (i % 201 - 100) / 10.0f; // values from -10.0f .. + 10.0f
}
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, nRows, nCols, GL_LUMINANCE, GL_FLOAT, values);
しかし、glGetTexImage() を使用してテクスチャを読み戻すと、すべての値が [0..1] の範囲にクリップされていることがわかります。
まず、この動作が文書化されている場所を見つけることができません (OpenGL 2.1 用の Red Book を使用しています)。
第二に、この動作を変更して、値を変更せずに渡すことは可能ですか? GLSL シェーダーでスケーリングもクリップもされていないデータにアクセスしたいと考えています。