我正在使用以下方式将主机端纹理上传到 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 的红皮书)。
其次,是否可以改变这种行为并让值不变地传递?我想访问 GLSL 着色器中未缩放、未剪辑的数据。