Opengl 顶点着色器->;几何体着色器,错误“;获取非活动制服的位置“;
我有如下设置 顶点着色器(…用于不相关的内容): 几何体着色器(…用于不相关的内容): 但是,当我尝试运行着色器时,它看起来好像没有使用ModelViewMatrix(在尝试设置它时,我得到了“获取非活动统一的位置”),甚至认为我正在使用它来计算几何体着色器中的gl_位置。有什么好处Opengl 顶点着色器->;几何体着色器,错误“;获取非活动制服的位置“;,opengl,glsl,vertex-shader,geometry-shader,Opengl,Glsl,Vertex Shader,Geometry Shader,我有如下设置 顶点着色器(…用于不相关的内容): 几何体着色器(…用于不相关的内容): 但是,当我尝试运行着色器时,它看起来好像没有使用ModelViewMatrix(在尝试设置它时,我得到了“获取非活动统一的位置”),甚至认为我正在使用它来计算几何体着色器中的gl_位置。有什么好处 据我所知,这里的几何体着色器接收2个顶点,输出4个顶点,以便片段着色器使用,我是否正确理解和使用几何体着色器?好,我解决了我的问题 我使用了错误的着色器,它与我尝试使用的着色器具有相同的vertice着色器,因此一
据我所知,这里的几何体着色器接收2个顶点,输出4个顶点,以便片段着色器使用,我是否正确理解和使用几何体着色器?好,我解决了我的问题 我使用了错误的着色器,它与我尝试使用的着色器具有相同的vertice着色器,因此一些制服有效,而其他制服无效,我感到困惑
#version 330 core
uniform mat4 ModelViewMatrix;
...
in vec4 position;
...
out vec4 out_position;
...
void main()
{
...
out_position = ModelViewMatrix * position;
...
}
#version 330 core
...
uniform mat4 ProjectionMatrix;
...
layout(lines) in;
layout(triangle_strip, max_vertices = 4) out;
in vec4 out_position[];
...
void main()
{
vec4 lineDirection = out_position[1] - out_position[0];
vec4 scaledLineWidthDir = ...;
...
gl_Position = ProjectionMatrix * (lineDirection - scaledLineWidthDir);
EmitVertex();
gl_Position = ProjectionMatrix * (lineDirection + scaledLineWidthDir);
EmitVertex();
gl_Position = ProjectionMatrix * (-lineDirection + scaledLineWidthDir);
EmitVertex();
gl_Position = ProjectionMatrix * (-lineDirection - scaledLineWidthDir);
EmitVertex();
EndPrimitive();
}