【发布时间】:2022-06-14 16:16:27
【问题描述】:
使用 p5.js 我有:
s.draw = () => {
s.background(0);
s.translate(-s.windowWidth / 2, -s.windowHeight / 2, 0);
s.shader(shader);
shader.setUniform("u_resolution", [s.width, s.height]);
shader.setUniform('vPos', getSquarePoints(cols/2, rows/2));
s.square(0, 0, cellSize);
}
const getSquarePoints = (i, j) => {
return new Float32Array([
i, j,
(i + cellSize), j,
i, (j + cellSize),
(i + cellSize), j,
(i + cellSize), (j + cellSize),
i, (j + cellSize),
])
}
我的顶点:
#ifdef GL_ES
precision mediump float;
#endif
attribute vec3 aPosition;
varying vec2 vPos;
void main() {
vec4 positionVec4 = vec4(aPosition, 1.0);
positionVec4.xy = positionVec4.xy * 2.0 - 1.0;
gl_Position = positionVec4;
}
片段:
#ifdef GL_ES
precision mediump float;
#endif
uniform vec2 u_resolution;
varying vec2 vPos;
void main() {
vec2 st = gl_FragCoord.xy / u_resolution.xy;
gl_FragColor = vec4(st.x, st.y, 0.0, 1.0);
}
所以 vPos 的类型错误,但我的计划是定义用 2 个三角形组成正方形所需的 6 个点并将这些点发送到位置缓冲区。
- 我该怎么做?
- 这甚至是“正确的方式”吗?
【问题讨论】:
标签: shader p5.js fragment-shader vertex-shader