gpt4 book ai didi

c++ - 将顶点位置从顶点传递到片段着色器 - 仅在使用 Nsight 调试时有效

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:10 28 4
gpt4 key购买 nike

我正在尝试将顶点位置作为简单的 out vec3 pos 从顶点着色器传递到片段着色器,以便根据顶点的位置对顶点进行着色。这是我的顶点着色器代码:

#version 330 core

in vec3 position;
out vec3 pos;

uniform mat4 u_model;


void main(){
pos = position;
gl_Position = u_model * vec4(position, 1.0f);
}

片段着色器:

#version 330 core

out vec4 color;
in vec4 pos;

void main(){

color = vec4(pos.x, 0.0f, 0.0f, 1.0f);
}

现在这仅在我使用 Visual Studio 2019 中的 Nsight 图形调试器运行程序时有效。

当我正常执行(x64,调试)时,它似乎回退到默认着色器,它将所有内容渲染为白色。上面发布的顶点和片段着色器停止工作。

最佳答案

顶点着色器输出的类型必须与下一着色器阶段(在本例中为片段着色器)中相应输入的类型完全匹配。
参见 interface matching rules between shader stages.

在您的例子中,顶点着色器输出的类型是 vec3:

out vec3 pos;

但是片段着色器输入的类型是vec4:

in vec4 pos;

将片段着色器输入的类型更改为vec3,以解决问题。


我不知道为什么这段代码在 Visual Studio 2019 中与 Nsight Graphics Debugger 一起工作。错误是它不应该这样做。

关于c++ - 将顶点位置从顶点传递到片段着色器 - 仅在使用 Nsight 调试时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59345528/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com