考慮以下頂點着色器:翻譯並不適用於所有點
attribute vec4 a_Position;
uniform mat4 u_ModelMatrix;
void main() {
gl_Position = u_ModelMatrix * a_Position;
gl_PointSize = 3.0;
}
在我的JavaScript程序中,我操縱u_ModelMatrix
有一個旋轉和平移。這適用於我畫的三角形。但我注意到,如果我畫一個第二對象有自己的頂點緩衝對象:
var vertexBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER, point, gl.STATIC_DRAW);
gl.uniform4f(u_FragColor, 1,1,0,1);
gl.drawArrays(gl.POINTS, 0, 1);
然後平移和旋轉不適用此對象。我認爲這是因爲GLSL程序中的gl_Position
是將點乘以矩陣。這就是我想要發生的事情,但我只是好奇爲什麼會出現這種情況?
也許這只是爲了舉例說明,但如果不是這樣,那麼緩衝區創建和drawArrays調用一起出現的事實至少是可疑的。你正在改變第一個和第二個對象之間的程序嗎? – Marco13