@@ -21,8 +21,11 @@ export const setupRenderArea = (
2121 viewportHeight : number ,
2222 color : number ,
2323) => {
24- renderer . setViewport ( x , y , viewportWidth , viewportHeight ) ;
25- renderer . setScissor ( x , y , viewportWidth , viewportHeight ) ;
24+ // In WebGLRenderer.setViewport() and WebGLRenderer.setScissor()
25+ // (x, y) is the coordinate of the lower left corner of the rectangular region.
26+ const overallHeight = renderer . domElement . height ;
27+ renderer . setViewport ( x , overallHeight - y - viewportHeight , viewportWidth , viewportHeight ) ;
28+ renderer . setScissor ( x , overallHeight - y - viewportHeight , viewportWidth , viewportHeight ) ;
2629 renderer . setScissorTest ( true ) ;
2730 renderer . setClearColor ( color , 1 ) ;
2831} ;
@@ -47,7 +50,7 @@ export function renderToTexture(
4750 width = Math . round ( width ) ;
4851 height = Math . round ( height ) ;
4952
50- renderer . setViewport ( 0 , 0 , width , height ) ;
53+ renderer . setViewport ( 0 , 0 + height , width , height ) ;
5154 renderer . setScissorTest ( false ) ;
5255 renderer . setClearColor ( 0x000000 , 1 ) ;
5356
@@ -58,8 +61,10 @@ export function renderToTexture(
5861 // $FlowFixMe plane cannot be arbitraryViewport
5962 SceneController. updateSceneForCam ( plane ) ;
6063 }
61- renderer . render ( scene , camera , renderTarget ) ;
64+ renderer . setRenderTarget ( renderTarget ) ;
65+ renderer . render ( scene , camera ) ;
6266 renderer . readRenderTargetPixels ( renderTarget , 0 , 0 , width , height , buffer ) ;
67+ renderer . setRenderTarget ( null ) ;
6368 return buffer ;
6469}
6570
0 commit comments