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 阴影映射中的偏差矩阵_Opengl - Fatal编程技术网

Opengl 阴影映射中的偏差矩阵

Opengl 阴影映射中的偏差矩阵,opengl,Opengl,我正在研究OpenGL中的阴影映射 我看到这样的代码: // This is matrix transform every coordinate x,y,z // x = x* 0.5 + 0.5 // y = y* 0.5 + 0.5 // z = z* 0.5 + 0.5 // Moving from unit cube [-1,1] to [0,1] const GLdouble bias[16] = { 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0

我正在研究OpenGL中的阴影映射

我看到这样的代码:

// This is matrix transform every coordinate x,y,z
// x = x* 0.5 + 0.5 
// y = y* 0.5 + 0.5 
// z = z* 0.5 + 0.5 
// Moving from unit cube [-1,1] to [0,1]  
const GLdouble bias[16] = {
  0.5, 0.0, 0.0, 0.0,
  0.0, 0.5, 0.0, 0.0,
  0.0, 0.0, 0.5, 0.0,
  0.5, 0.5, 0.5, 1.0};

// Grab modelview and transformation matrices
glGetDoublev(GL_MODELVIEW_MATRIX, modelView);
glGetDoublev(GL_PROJECTION_MATRIX, projection);


glMatrixMode(GL_TEXTURE);
glActiveTextureARB(GL_TEXTURE7);

glLoadIdentity();
glLoadMatrixd(bias);

// concatating all matrice into one.
glMultMatrixd (projection);
glMultMatrixd (modelView);

// Go back to normal matrix mode
glMatrixMode(GL_MODELVIEW);
现在,如果我撕掉偏差矩阵。代码不起作用。搜索其他阴影映射代码时,我看到了相同的偏移矩阵,没有任何解释。为什么我要将这个偏差映射到x,y,z到0.5*x+0.5,0.5*y+y


谢谢

使用标准模型视图/投影矩阵变换平截头体内部的顶点时,得到的结果是,一旦完成w分割,该顶点位于[-1:1]x[-1:1]x[-1:1]立方体中。您希望纹理坐标在[0:1]x[0:1]范围内,因此需要重新映射x和y。对于Z也是一样的,假设你的值是[0:1],这是默认值