您不需要渲染紋理(雖然這是一種方式)。它實際上可以用gl.viewport
簡單得多。
gl.viewport
只是在畫布上設置一個矩形,您想渲染。任何落在該矩形之外的東西都會被裁剪掉。通常將它設置爲相同大小的畫布,因爲要呈現全屏,但在你的情況,你可以做到以下幾點:
// Clears the entire scene. gl.clear does not respect the viewport
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
// Render upper left quadrant
gl.viewport(0, 0, canvas.width/2, canvas.height/2);
drawSceneWithShader(shader[0]);
// Render upper right quadrant
gl.viewport(canvas.width/2, 0, canvas.width/2, canvas.height/2);
drawSceneWithShader(shader[1]);
// Render lower left quadrant
gl.viewport(0, canvas.height/2, canvas.width/2, canvas.height/2);
drawSceneWithShader(shader[2]);
// Render lower right quadrant
gl.viewport(canvas.width/2, canvas.height/2, canvas.width/2, canvas.height/2);
drawSceneWithShader(shader[3]);
當渲染只呈現整個場景像正常的,你並不需要做任何特別的事情來解釋新的視口。 (但是,如果您正在做任何鼠標拾取或類似操作,您確實需要考慮視口!)
完美!非常感謝! – JoniPichoni 2012-01-15 09:19:45