经过反复试验,我终于可以渲染基本的全屏四边形了。但是,它始终被放在其他所有事物的前面。我尝试将深度(Z
轴)的值更改为0
和1
之间的十分之一。在此特定问题上,我也找不到其他任何文档。
在我的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
值都会被裁剪。此四边形的渲染调用优先于屏幕上的其他任何东西。
如何确保此四边形始终呈现在其他所有东西之后?