gpt4 book ai didi

opengl - 阴影贴图中的偏置矩阵

转载 作者:行者123 更新时间:2023-12-02 06:32:06 26 4
gpt4 key购买 nike

我正在研究 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, ... ?

谢谢!

最佳答案

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

关于opengl - 阴影贴图中的偏置矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com