我有一个Flash应用程序,其中两个3d视图共享相同的Stage3DProxy,因为我需要一个在任何时候覆盖/绘制在另一个上.但是,它们似乎共享相同的3d空间/ z缓冲区(?).
我的更新功能目前看起来像这样:
private function onEnterFrame(event : Event) : void {
stage3DProxy.clear();
away3DView.render();
away3DView2.render();
stage3DProxy.present();
}
Run Code Online (Sandbox Code Playgroud)
显然,这本身还不够 - 我在某处读到了可以使用setDepthTest方法,例如:
stage3DProxy.context3D.setDepthTest(false, Context3DCompareMode.NEVER);
Run Code Online (Sandbox Code Playgroud)
...在每个视图的render()调用之间将它设置为不同的模式,但我对它的工作原理并不清楚,并且文档在实际上非常薄.我玩过,在渲染调用之间设置不同的东西,但没有快乐.
设置Stage3DProxy的唯一例子是使用一个Away3D视图和两个starling - 这不是我想要的.我在他们的论坛上阅读了一条评论,其中说你必须在大约'其他地方'指定某些setDepthTest设置,但是没有详细说明它们的位置或者它们需要设置的位置,这听起来像是一个非常黑客的应该是非常基本的东西!
如果有人可以提供帮助我会非常感激,或者如果有人知道另一种方法来做这件事 - 强迫一个特定的绘图顺序似乎应该是一个相对微不足道的任务但我发现没有任何有用的事情,我想坚持Away3D因为它是一个很好的API和功能集,但这是我当前项目的真正障碍!
提前致谢