Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 纹理传输过程中亮度值被剪裁为[0,1]?_Opengl_Glsl_Textures - Fatal编程技术网

Opengl 纹理传输过程中亮度值被剪裁为[0,1]?

Opengl 纹理传输过程中亮度值被剪裁为[0,1]?,opengl,glsl,textures,Opengl,Glsl,Textures,我正在使用以下方式将主机端纹理上载到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,

我正在使用以下方式将主机端纹理上载到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);
GLfloat*值=新的[nRows*nCols];
//初始化值
对于(int i=0;i
但是,当我使用glGetTexImage()读回纹理时,所有值都被剪裁到范围[0..1]

首先,我找不到记录这种行为的地方(我使用的是OpenGL 2.1的红皮书)

第二,是否可以更改此行为并让值不变地传递?我想访问GLSL着色器中未缩放、未剪裁的数据

我找不到记录这种行为的地方

在实际规范中,它位于关于像素矩形的部分,标题为像素矩形的传输

第二,是否可以更改此行为并让值不变地传递


对。如果要使用“无标度、无夹点”数据,则必须使用。纹理的格式在创建时定义,可能通过调用
glTexImage2D
。该函数的第三个参数定义了格式。因此,请使用正确的浮点格式,而不是整数格式。

钳位是正确的。但我认为你应该解释你想做什么。为什么不首先使用规范化值?啊,你是指glTexImage2D中的内部格式参数!下面是合适的浮点格式列表:对我来说,GL_R32F成功了!