我正在开发一个2D AS3项目,其中不同的图层通过Stage3D在单个drawTriangles()调用中呈现为单个网格。 (如果你熟悉BunnyMark GPUSprite迷你渲染引擎,那会给你一个想法:http://www.bytearray.org/?p=4074)
我想要的是绘制这些整个'渲染图层'中的一个,具有整体Alpha透明度值,该值适用于绘制的所有三角形,并添加到它们自己的alpha值。
IE我不打算通过使用具有alpha透明度的纹理来更改alpha,或者通过分别设置每个三角形以具有相同的alpha:我想要一个主开关,它会影响绘制的所有内容的alpha值? (计算上便宜的东西)
这可能吗?也许是通过Shader或setProgramConstantsFromVector命令?
答案 0 :(得分: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);