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_Graphics_Rendering_Pipeline_Depth Buffer - Fatal编程技术网

Opengl 通过深度缓冲器

Opengl 通过深度缓冲器,opengl,graphics,rendering,pipeline,depth-buffer,Opengl,Graphics,Rendering,Pipeline,Depth Buffer,所以我在读一篇关于特定着色算法的论文,其中有一部分似乎有点模糊,我想知道我是否可以在这里得到建议 基本上,它说我首先要获取一个网格的3D顶点,并将其转换为窗口坐标wx,wy,wz,其中wz是深度。这部分我已经完成了 接下来,我必须测试这个窗口坐标是否“通过”深度缓冲区 这就是它所说的,我不确定“传递”深度缓冲区意味着什么。这里有人知道这意味着什么,以及我如何在openGL中实现这一点吗 编辑: 更具体地说,我需要openGL为我提供关于特定顶点是否通过深度缓冲区的反馈。我实际上并没有渲染这些顶点

所以我在读一篇关于特定着色算法的论文,其中有一部分似乎有点模糊,我想知道我是否可以在这里得到建议

基本上,它说我首先要获取一个网格的3D顶点,并将其转换为窗口坐标wx,wy,wz,其中wz是深度。这部分我已经完成了

接下来,我必须测试这个窗口坐标是否“通过”深度缓冲区

这就是它所说的,我不确定“传递”深度缓冲区意味着什么。这里有人知道这意味着什么,以及我如何在openGL中实现这一点吗

编辑:


更具体地说,我需要openGL为我提供关于特定顶点是否通过深度缓冲区的反馈。我实际上并没有渲染这些顶点,所以如果openGL“在幕后”进行所有计算,这对我没有好处。

深度测试是openGL管道的一部分,应该在片段(像素)着色器之后调用。因此,您无需自己执行此操作,只需正确初始化投影矩阵和视口,以便计算每个顶点的
Wz
,然后跨顶点插值。您可以配置此测试的某些属性

以下是OpenGL管道概述: 请参阅第7章:每个样本处理

进行深度测试(如有);如果失败,则片段将被剔除,而不会添加到帧缓冲区。



您说过您必须知道哪些顶点通过了深度测试。但是深度测试只在片段上调用,而不在顶点上调用。因此,如果您已经有具有窗口x、y和z坐标的顶点,那么您可以检查具有相同(x、y)坐标的顶点的z坐标,并确定其中谁将赢得此深度测试…

深度测试是OpenGL管道的一部分,应该在片段(像素)着色器之后调用。因此,您无需自己执行此操作,只需正确初始化投影矩阵和视口,以便计算每个顶点的
Wz
,然后跨顶点插值。您可以配置此测试的某些属性

以下是OpenGL管道概述: 请参阅第7章:每个样本处理

进行深度测试(如有);如果失败,则片段将被剔除,而不会添加到帧缓冲区。



您说过您必须知道哪些顶点通过了深度测试。但是深度测试只在片段上调用,而不在顶点上调用。因此,如果你已经有了带有窗口x、y和z坐标的顶点,那么你只需检查z坐标,即那些具有相同(x、y)坐标的顶点,并确定其中谁将赢得深度测试…

你在维基百科上找到了吗?是的,但是有点混乱。因此,我知道我的“wz”组件是像素的深度,但我感到困惑的是,显然openGL有一个内置的z缓冲区值,我也可以比较我的wz项,但我不知道如何访问初始的z值。看看openGL管道概述,例如:这里:这个页面有一个深度测试描述。事实上,它是管道的一部分,你可以禁用也可以不禁用,但是你不需要自己做这个深度测试我其实不需要渲染顶点,我只需要知道它是否通过深度测试,这样我就可以对通过的顶点做其他事情。例如,什么事情?你在维基百科上找过这个吗?是的,但是有点混乱。因此,我知道我的“wz”组件是像素的深度,但我感到困惑的是,显然openGL有一个内置的z缓冲区值,我也可以比较我的wz项,但我不知道如何访问初始的z值。看看openGL管道概述,例如:这里:这个页面有一个深度测试描述。实际上,它是管道的一部分,你可以禁用也可以不禁用,但是你不需要自己做深度测试我实际上不需要渲染顶点,我只需要知道它是否通过深度测试,这样我就可以对通过的顶点做其他事情。例如,什么事情?