Shader 何时可以将主着色器函数与regl一起使用?

Shader 何时可以将主着色器函数与regl一起使用?,shader,void,regl,Shader,Void,Regl,在构造着色器时,我注意到有时会使用名为main的void函数来定义着色器。当属性被迭代时,main似乎被添加到着色器中 我想弄清楚什么时候应该在main中定义着色器,而不是仅在着色器的顶级定义空间中定义着色器 示例代码来自 我不熟悉regl,但是GLSL着色器始终需要main()函数。它是着色器的入口点。例如,对于顶点着色器,将为每个顶点执行着色器的main()函数。在教程代码中,gl_Position是顶点着色器的内置输出(与用户定义的输出相反)属性向量2位置为顶点着色器定义一个输入变量,该变

在构造着色器时,我注意到有时会使用名为main的void函数来定义着色器。当属性被迭代时,
main
似乎被添加到着色器中

我想弄清楚什么时候应该在
main
中定义着色器,而不是仅在着色器的顶级定义空间中定义着色器

示例代码来自


我不熟悉regl,但是GLSL着色器始终需要
main()
函数。它是着色器的入口点。例如,对于顶点着色器,将为每个顶点执行着色器的
main()
函数。在教程代码中,
gl_Position
是顶点着色器的内置输出(与用户定义的输出相反)<代码>属性向量2位置为顶点着色器定义一个输入变量,该变量提供对
位置
属性的访问

var drawTriangle = regl({
  //
  // First we define a vertex shader.  This is a program which tells the GPU
  // where to draw the vertices.
  //
  vert: `
    // This is a simple vertex shader that just passes the position through
    attribute vec2 position;
    void main () {
      gl_Position = vec4(position, 0, 1);
    }
  `,

  //
  // Next, we define a fragment shader to tell the GPU what color to draw.
  //
  frag: `
    // This is program just colors the triangle white
    void main () {
      gl_FragColor = vec4(1, 1, 1, 1);
    }
  `,

  // Finally we need to give the vertices to the GPU
  attributes: {
    position: [
      [1, 0],
      [0, 1],
      [-1, -1]
    ]
  },

  // And also tell it how many vertices to draw
  count: 3
})