WEBGL/OPENGLES-如何在一个渲染中连接多个渲染?

WEBGL/OPENGLES-如何在一个渲染中连接多个渲染?,webgl,Webgl,我的问题是: 我想把画布分成4个虚拟象限,每个象限都是我想要的 使用不同的颜色(使用不同的片段着色器)渲染同一场景,以实时比较某些效果。我不知道该怎么做。 我应该在4种不同的纹理中渲染同一场景4次,然后用这些纹理填充4个矩形吗?或者我应该制作另一个fshader并用这些纹理手动填充所有片段?是否可以使用渲染缓冲区对象来提高性能 提前感谢,您不需要为此渲染到纹理(尽管这是一种方法)。实际上,使用gl.viewport可以做得更简单 gl.viewport只需在画布上设置要渲染到的矩形。任何落在该矩

我的问题是:

我想把画布分成4个虚拟象限,每个象限都是我想要的 使用不同的颜色(使用不同的片段着色器)渲染同一场景,以实时比较某些效果。我不知道该怎么做。 我应该在4种不同的纹理中渲染同一场景4次,然后用这些纹理填充4个矩形吗?或者我应该制作另一个fshader并用这些纹理手动填充所有片段?是否可以使用渲染缓冲区对象来提高性能


提前感谢,

您不需要为此渲染到纹理(尽管这是一种方法)。实际上,使用
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]);
当渲染时,只需像普通一样渲染整个场景,就不需要执行任何特殊操作来解释新视口。(但是,如果要进行任何鼠标拾取或类似操作,则需要考虑视口!)