I’m not sure if I understand your intention on dealing with the renderToTexture and the backbuffer.
Anyway, if you intent to render multiple views/scenes, you need multiple views instances, all sharing the same Stage3D (and its backbuffer, etc).
So just create 2 view3d instances, share the same proxy, and place them side-by-side in the flash stage. In the proxy enterframe, just render both.
The stage3D is like an empty canvas, where you just go rendering things layer by layer.
Here is a little test:
package {
import away3d.containers.View3D;
import away3d.core.managers.Stage3DManager;
import away3d.core.managers.Stage3DProxy;
import away3d.events.Stage3DEvent;
import away3d.primitives.WireframeCube;
import away3d.primitives.WireframePrimitiveBase;
import away3d.primitives.WireframeTetrahedron;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
[SWF(backgroundColor="#0055aa", frameRate="30", width="1024", height="720")]
public class MultiViewTester extends Sprite {
private var leftView : View3D;
private var rightView : View3D;
private var stage3DProxy : Stage3DProxy;
private const cube : WireframePrimitiveBase= new WireframeCube(100,100,100,0xff0000);
private const tetra : WireframePrimitiveBase= new WireframeTetrahedron(100,100,0x00ff00);
// Construtor
public function MultiViewTester() {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
var stage3DManager : Stage3DManager = Stage3DManager.getInstance(stage);
stage3DProxy = stage3DManager.getFreeStage3DProxy();
stage3DProxy.color= 0x004080;
stage3DProxy.addEventListener(Stage3DEvent.CONTEXT3D_CREATED, onContextCreated);
}
private function onContextCreated(event : Stage3DEvent) : void {
leftView= new View3D();
leftView.shareContext = true;
leftView.stage3DProxy = stage3DProxy;
leftView.width= stage.stageWidth * .5;
leftView.scene.addChild(cube);
addChild(leftView);
rightView= new View3D();
rightView.shareContext = true;
rightView.stage3DProxy = stage3DProxy;
rightView.x= rightView.width= stage.stageWidth * .5;
rightView.scene.addChild(tetra);
addChild(rightView);
stage3DProxy.addEventListener(Event.ENTER_FRAME, onFrame);
}
private function onFrame(event : Event) : void {
cube.rotationX+= 2;
cube.rotationZ-= 2;
tetra.rotationX-= 2;
tetra.rotationY+= 2;
leftView.render();
rightView.render();
}
}
}