deb*_*air 4 opengl depth-buffer depth depth-testing
我的顶点线是:
GLfloat vertices[]=
{
0.5f,0.5f,0.5f,
-0.5f,0.5f,0.5f,
-0.5f,-0.5f,0.5f,
0.5f,-0.5f,0.5f,//face 1
0.5f,-0.5f,-0.5f,
-0.5f,-0.5f,-0.5f,
-0.5f,0.5f,-0.5f,
0.5f,0.5f,-0.5f,//face 2
0.5f,0.5f,0.5f,
0.5f,-0.5f,0.5f,
0.5f,-0.5f,-0.5f,
0.5f,0.5f,-0.5f,//face 3
-0.5f,0.5f,0.5f,
-0.5f,0.5f,-0.5f,
-0.5f,-0.5f,-0.5f,
-0.5f,-0.5f,0.5f,//face 4
0.5f,0.5f,0.5f,
0.5f,0.5f,-0.5f,
-0.5f,0.5f,-0.5f,
-0.5f,0.5f,0.5f,//face 5
-0.5f,-0.5f,0.5f,
-0.5f,-0.5f,-0.5f,
0.5f,-0.5f,-0.5f,
0.5f,-0.5f,0.5f//face 6
};
Run Code Online (Sandbox Code Playgroud)
现在,我正在改变z绳索:
for(int i=0;i<24;i++)
vertices[i*3+2]*=10
glDepthRange(0,10.0);
Run Code Online (Sandbox Code Playgroud)
现在,我期待由于glDepthRange调用,z线将被映射到-0.5到0.5范围,并且我可以看到一个合适的立方体,但是它给出o/p,就像我在上面用变形几何注释glDepthRange一样.
让我引用一下手册页:
在剪切和除以w之后,深度坐标的范围从-1到1,对应于近剪裁平面和远剪裁平面.glDepthRange指定此范围内的标准化深度坐标与窗口深度坐标的线性映射.无论实际的深度缓冲区实现如何,窗口坐标深度值都被视为从0到1(如颜色分量).因此,glDepthRange接受的值在被接受之前都被钳制到该范围.
突出我的
换句话说,你不能真正使用大于1的深度值; 你必须自己适当地计算它们.它本质上得出结论,以设置适当的near,并far在你的投影矩阵的价值观和翻译中的Z的模型变换矩阵坐标,使所有最终ZS是前述之间.
如果您需要更详细的解释,请发表评论.
| 归档时间: |
|
| 查看次数: |
5517 次 |
| 最近记录: |