1

我正在开发一个 2D AS3 项目,其中不同的图层通过 Stage3D 在单个 drawTriangles() 调用中呈现为单个网格。(如果你熟悉 BunnyMark GPUSprite 迷你渲染引擎,那会给你一个想法:http ://www.bytearray.org/?p=4074 )

我想要的是绘制这些完整的“渲染层”之一,具有一个整体的 alpha 透明度值,这将适用于所有绘制的三角形,并添加到它们自己的 alpha 值。

IE 我不希望通过使用具有 alpha 透明度的纹理或必须通过单独设置每个三角形以具有相同的 alpha 来更改 alpha:我想要一个会影响绘制的所有内容的 alpha 值的主开关?(计算上便宜的东西)

这可能吗?也许通过着色器或 setProgramConstantsFromVector 命令?

4

1 回答 1

0

好吧,您可以将您的图层渲染为纹理,然后您可以将此纹理放在舞台上并使用您想要的 alpha,这样您的整个图层将具有相同的 alpha!

您可以通过两种方式做到这一点,第一种方式是将其渲染为纹理,并使用 Stage3D 显示该纹理并创建一个调整 alpha 的着色器。

第二种方法是将其渲染为 bitmapData,并在普通舞台上显示。我将举例说明这种方式:

var bmd:BitmapData = new BitmapData(renderWidth, renderHeight, true, 0);
var bit:Bitmap = new Bitmap(bmd);
bit.alpha = 0.5;
addChild(bit);

//In your render loop at the beginning
context3D.renderToBitmapData(bmd);
于 2012-08-30T22:10:52.887 回答