如何解决几何着色器正在复制形状处理中
我正在尝试使用几何着色器生成一个简单的形状,但该形状渲染了两次,我不知道为什么。
首先我们有一个非常简单的顶点着色器
#version 150
in vec4 position;
void main() {
gl_Position = position;
}
#version 150
layout (triangles) in;
layout (triangle_strip,max_vertices = 5) out;
out FragData {
vec4 color;
} FragOut;
void main(){
//RED TOP LEFT
FragOut.color = vec4(1.0,0.0,1.0);
gl_Position = gl_in[0].gl_Position + vec4( -1.0,0.0);
EmitVertex();
//BLUE BottOM LEFT
FragOut.color = vec4(0.,0.,1.,1.);
gl_Position = gl_in[0].gl_Position + vec4( -1.0,-1.0,0.0);
EmitVertex();
//GREEN BottOM RIGHT
FragOut.color = vec4(0.0,1.0,1.0);
gl_Position = gl_in[0].gl_Position + vec4( 1.0,0.0);
EmitVertex();
EndPrimitive();
}
最后是一个简单的片段着色器
#version 150
in FragData {
vec4 color;
} FragIn;
out vec4 fragColor;
void main() {
fragColor = FragIn.color;
}
结果应该是一个三角形,但正在渲染两个三角形:
解决方法
Geometry Shader 对每个原语执行一次。 rect()
由 2 个三角形组成,因此几何着色器执行两次并生成 2 个 triangle_strip
图元。
绘制单个 POINTS
基元而不是矩形:
beginShape(POINTS);
vertex(x,y);
endShape();
请注意,您需要更改 Primitive input specification:
layout (triangles) in;
layout (points) in;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。