确保全屏四边形渲染在其他所有东西之后?

时间:2018-12-17 15:27:51

标签: c# directx-11 sharpdx depth-buffer

经过反复试验,我终于可以渲染基本的全屏四边形了。但是,它始终被放在其他所有事物的前面。我尝试将深度(Z轴)的值更改为01之间的十分之一。在此特定问题上,我也找不到其他任何文档。

在我的GeometryShader中创建了四边形;作为示例,我已经包含了第一点,但是意识到这些点是从左下角开始以顺时针方向缠绕并创建的。对于总共两个三角形,顶点总数为6。

// The Z is 1.0 so that I am not multiplying by zero.
float4 ratio = float4(normalize(ViewportHeight, ViewportWidth, 1.0f), 0.0f);
PixelShaderIN bottomLeft = (PixelShaderIN)0;
bottomLeft.Position = float4(-1.0f, -1.0f, 0.0f, 0.0f) * ratio;

// The full list of x, y positions:
// bottomLeft  = -1, -1
// upperLeft   = -1,  1
// upperRight  =  1,  1
// bottomRight =  1, -1

// Once all four points of the quad are created:
output.Append(bottomLeft);
output.Append(upperLeft);
output.Append(upperRight);
output.RestartStrip();
output.Append(bottomLeft);
output.Append(upperRight);
output.Append(bottomRight);
output.RestartStrip();

据我了解,启用剔除和深度后,Z以下的任何0.0f值都会被裁剪。此四边形的渲染调用优先于屏幕上的其他任何东西。


如何确保此四边形始终呈现在其他所有东西之后?

0 个答案:

没有答案