我可以让Stage3D写入Z缓冲区吗?

时间:2013-02-22 10:44:44

标签: actionscript-3 flash stage3d

我想渲染隐藏的对象并获得与Stage3D中链接中显示的效果类似的效果。

Silhouette Effect in Torchlight 2

我已经知道如何在理论上做到这一点。我必须画两次对象:

  • 使用正常设置和
  • 一次使用不同的深度排序模式,其中仅显示后面渲染几何体的像素。 另外,为了防止以后出现奇怪的效果,这些像素无法渲染到深度缓冲区中。

我可以使用Context3DCompareMode.GREATER在Stage3D中设置正确的深度排序模式。 是否也可以将Stage3D渲染像素放入后缓冲区,而不是z缓冲区?

如果我无法将Stage3D保持渲染到深度缓冲区,效果将如下所示:

Glitchy Silhoutte Effect

2 个答案:

答案 0 :(得分:0)

是的,您可以关闭深度和模板缓冲区。检查context3d.configureBackBuffer方法。

答案 1 :(得分:0)

如果有人遇到这个问题,你应该注意两件事:

1)由于Volgogradetzzz使用Context3D.configureBackBuffer(...)

确保你有一个模板/深度缓冲区作为后备缓冲区的一部分

2)如果您需要在不同时刻开启或关闭深度像素写入,您可以在此函数中设置depthMask参数:

public function setDepthTest(depthMask:Boolean, passCompareMode:String):void

在此名称的函数中找到此功能有点奇怪,因为深度写入屏蔽会影响结果,而不会影响测试本身。