Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将顶点位置从顶点传递到片段着色器-仅在使用Nsight调试时有效_C++_Opengl_Glsl_Shader_Nsight - Fatal编程技术网

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

C++ 将顶点位置从顶点传递到片段着色器-仅在使用Nsight调试时有效,c++,opengl,glsl,shader,nsight,C++,Opengl,Glsl,Shader,Nsight,我试图将顶点位置作为一个简单的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 3

我试图将顶点位置作为一个简单的
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);
}
现在,只有当我在VisualStudio2019中使用Nsight图形调试器运行程序时,这才起作用


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

顶点着色器输出的类型必须与下一个着色器阶段(本例中为片段着色器)中相应输入的类型完全匹配。

在您的情况下,顶点着色器输出的类型为
vec3

out-vec3位置;
但是片段着色器输入的类型是
vec4

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



我不知道为什么这段代码可以在VisualStudio2019中使用Nsight图形调试器。错误在于它不应该这样做。

编译和链接着色器时,应该始终检查错误。