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 度,从而修复了错误的缠绕顺序。
我有这两个着色器:
#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 度,从而修复了错误的缠绕顺序。