При создании ваших шейдеров я замечаю, что иногда создается функция void с именем main, которая используется для определения шейдера.Похоже, что main
добавляется в шейдер при повторном включении атрибута.
Я хотел бы получить некоторую ясность, когда уместно определить шейдер внутри main
, а не только внутри пространства определения верхнего уровня шейдера.
Пример кода от учебное пособие .
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
})