Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Glsl 顶点着色器动画随摄影机旋转_Glsl_Processing_Shader - Fatal编程技术网

Glsl 顶点着色器动画随摄影机旋转

Glsl 顶点着色器动画随摄影机旋转,glsl,processing,shader,Glsl,Processing,Shader,我是着色器新手,希望使用顶点着色器为对象设置动画 现在我只想用一个常数移动它。出于某种原因,它不是沿着世界的x方向移动,而是沿着相机的x方向移动。(因此,每当我转动相机时,对象都会随我旋转) 项目正在处理中,但我认为它不会影响着色器 处理代码: PShader sdr; void setup() { size(1000, 1000, P3D); noStroke(); sdr = loadShader("shdFrag.glsl", "shdVert.glsl"); } void

我是着色器新手,希望使用顶点着色器为对象设置动画

现在我只想用一个常数移动它。出于某种原因,它不是沿着世界的x方向移动,而是沿着相机的x方向移动。(因此,每当我转动相机时,对象都会随我旋转)

项目正在处理中,但我认为它不会影响着色器

处理代码:

PShader sdr;

void setup() {
  size(1000, 1000, P3D);
  noStroke();
  sdr = loadShader("shdFrag.glsl", "shdVert.glsl");
}

void draw() {

  background(200);

  // Set camera
  camera(0, -300, 700, mouseX-500, 0, 200, 0, 1, 0);

  // Ground
  resetShader();
  beginShape();
  fill(100);
  vertex(-500, 0,  500);
  vertex( 500, 0,  500);
  vertex( 500, 0, -500);
  vertex(-500, 0, -500);
  endShape();

  // Red Sphere
  shader(sdr);
  fill(255, 0, 0);
  sphere(100);
}
顶点着色器:

uniform mat4 transform;

attribute vec4 position;
attribute vec4 color;
out vec4 vertColor;

void main() {
  vec4 pos = position;
  pos.x  += 300;


  vertColor = color;
  gl_Position = transform * pos;
}
片段着色器:

#ifdef GL_ES
precision mediump float;
precision mediump int;
#endif

in vec4 vertColor;

void main() {
  vec4 color = vertColor;
  gl_FragColor = vec4(color.xyz, 1);
}
正在发生的事情的GIF:

你能为“与我一起旋转”的意思创建一个gif吗?如果代码正在处理中,请将代码显示为,因为处理API不支持OpenGL语法(即使运行草图的JVM有办法让你编写着色器代码-这不再是真正的处理,而只是Java)所以你现在展示的肯定不是你实际使用的代码。除非你用了一些你忘记放在帖子里的东西,在这种情况下:谈谈你帖子里的东西。