Glsl 着色器在Processing 3.0中不会着色

Glsl 着色器在Processing 3.0中不会着色,glsl,shader,processing,fragment-shader,vertex-shader,Glsl,Shader,Processing,Fragment Shader,Vertex Shader,我一直在遵循学校的一些指南,但似乎无法让它们发挥作用。我写了一个简单的草图,在3d空间中画了一个三角形。我想应用两个着色器,一个用于颜色,另一个用于其“运动”。这是我到目前为止所写的代码(peasyCam只是一个用于相机控制的库) 草图: PShader myShader; void settings() { size(640, 480, P3D); } void setup() { myShader = loadShader("frag.glsl", "vert.glsl");

我一直在遵循学校的一些指南,但似乎无法让它们发挥作用。我写了一个简单的草图,在3d空间中画了一个三角形。我想应用两个着色器,一个用于颜色,另一个用于其“运动”。这是我到目前为止所写的代码(peasyCam只是一个用于相机控制的库)

草图:

PShader myShader;

void settings() {
  size(640, 480, P3D);
}

void setup() {

  myShader = loadShader("frag.glsl", "vert.glsl");
  shader(myShader);
  myShader.set("tint", 1.0, 1.0, 0.0);
  noLights();
}

void draw() {

  background(255);

  pushMatrix();
  translate(200, 150, -100);
  beginShape(TRIANGLE_STRIP);
  {
    vertex(-100, -100, 50);
    vertex(100, -100, 0);
    vertex(100, 100, -50);
    vertex(50, 100, 0);
    vertex(-100, 50, 50);
  }
  endShape();
  popMatrix();
}
着色器:

/////////////////////vertex/////////////////////

#define PROCESSING_COLOR_SHADER 
uniform mat4 transform;
attribute vec4 vertex;
attribute vec4 color;   
varying vec4 col;


void main(){
gl_Position *= (sin(0.04*gl_Position.y) + 2.0)/2.0;
col = color;
}

////////////////////////////////////////////////////

////////////////fragment///////////////////////////
#ifdef GL_ES
precision mediump float;
precision mediump int;
#endif
varying vec4 col;
uniform vec3 tint;


void main() {
gl_FragColor = vec4(col.xyz*tint, 1); 
}

////////////////////////////////////////////////////

输出是形状本身,但似乎没有应用任何着色器。

您可以发布一个没有PeasyCam内容的文件吗?当然,很抱歉,我还没有测试它,但似乎您需要将着色器指定给每帧形状,而不仅仅是在初始化时。。。您已经尝试调用draw()内部的着色器()(而不是setup())了吗?到目前为止,我可以看到,你的顶点或碎片着色器没有任何错误…你可以发布一个没有PeasyCam的东西吗?当然,很抱歉,我还没有测试它,但似乎你需要指定着色器为每帧形状,而不仅仅是在初始化时。。。您已经尝试调用draw()内部的着色器()(而不是setup())了吗?到目前为止,我可以看到,没有任何关于你的顶点或碎片着色器错误。。。