处理中几何着色器的意外行为

问题描述

我在处理中使用了一个简单的几何着色器:

shader(shader);
  
beginShape();
   vertex(0.1,0.1);
   vertex(0.0,0.0);
   vertex(0.001,0.02);
endShape();

所以我在三角形上应用着色器。

我们首先有一个什么都不做的简单顶点着色器。

in vec4 position;
 
void main() {
  gl_Position = position;
}

然后我们有几何着色器,它应该为每个输入顶点返回一个顶点,所以总共有 3 个顶点。

#version 150

layout (triangles) in;
layout (triangle_strip,max_vertices = 3) out;
 
out FragData {
  vec4 color;
} FragOut;
 
void main(){

  for(int i=0; i<gl_in.length(); i++){
    if(i%3==0){
      FragOut.color = vec4(1.,0.,1.);
    }else if(i%3==1){
      FragOut.color = vec4(0.,1.,1.);
    }else if(i%3==2){
      FragOut.color = vec4(0.,1.);
    }
    gl_Position = gl_in[i].gl_Position;
    EmitVertex();
  }
  
  EndPrimitive();
}

最后我们有了一个什么都不做的简单片段着色器:

#version 150

in FragData {
  vec4 color;
} FragIn;

out vec4 fragColor;

void main() {
  fragColor = FragIn.color;
}

结果应该是一个三角形,每个顶点都有不同的颜色。但结果是四个三角形,我不知道为什么。

Here's the result

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...