Grid 网格在 mvp 操作下看起来不错,但在正交投影中却不行

Grid mesh looks fine under mvp operation, but not in orthogonal projection

我有这两个着色器:

#version 450
#extension GL_ARB_separate_shader_objects : enable

layout(location = 0) in vec3 in_position;

layout(binding = 0) uniform MVPOnlyUbo {
    mat4 model;
    mat4 view;
    mat4 proj;
} ubo;

void main()
{
    gl_PointSize = 5.f;
    gl_Position =  vec4(in_position.xy, 0.5, 1.0);
}

#version 450
#extension GL_ARB_separate_shader_objects : enable

layout(location = 0) out vec4 color_out;

void main()
{
    color_out = vec4(0, 1, 0, 1);
}

尽可能简单。

如果修改顶点着色器做:

gl_Position = ubo.proj * ubo.view * vec4(in_position.xy, 0.5, 1.0);

我看到这个(正确):

如果我改为进行正交投影: gl_Position = vec4(in_position.xy, 0.5, 1.0);

我看到了这一点(即所有的点似乎都集中在 y=0 或 y=-1 中):

对我来说特别奇怪的是,如果我使用 renderdoc 检查事物,我会将其视为网格和顶点值(对于非工作版本):

所以顶点入点和顶点出点是正确的,VS 正在发射未经修改的属性输入。 renderdoc 本身将其显示为输出:

我应该在屏幕的右下角看到一团绿点,为什么我在象限内看到 2 条线而什么都没有?

没有其他绘制调用或类似的东西,renderdoc 将其显示为使用这 2 个着色器的 renderpass 的输出。为什么 renderdoc 和 glsl 给我的结果与屏幕右下象限的结果不同?

如果有人遇到这个问题,那是我在为我的三角形创建缠绕顺序时犯了一个错误。有些三角形的缠绕顺序正确,有些则不正确。

透视投影“成功了”,因为它将图像旋转了 180 度,从而修复了错误的缠绕顺序。