最终,papervision3d(Flash的流行3D渲染包)如何将变换后的纹理绘制到屏幕上?
它是在内部使用Flash的任何渲染设备 - 即通过将纹理绘制到DisplayObjects并转换它们,还是使用3D MovieClips?或者过滤器?或者它最终只是从纹理中读取像素并将它们绘制到输出中,就像在任何软件平台中一样?
我问,因为直截了当的答案将是后者,但经过一些测试后,似乎getPixel
并setPixel
没有足够快到这种方法,所以似乎必须有一些更神秘的事情发生.
感谢您的任何信息!
编辑 - 我对答案的总结:Papervision本身并不进行透视变换.它只对每个纹理三角形进行缩放和倾斜变换,如果使用足够的三角形,则会产生透视错觉.仿射变换使用Flash的渲染设备,因此避免了像素操作的成本.
它都是使用绘图API渲染的.(lineTo)使用绘图API,您可以设置bitmapFill ratehr而不是颜色,这允许您绘制纹理.在内部,他们将您传入的每个资源作为纹理转换为BitmapData对象,以便在渲染时使用.然后,对于您的3D对象所具有的细分(三角形),它们会在其上进行转换以获得正确的视角.
这种方法仍然是处理器密集型的,但比设置每个像素更快.它的工作原理非常类似于其他3D渲染软件,使用专门为ActionScript构建的smae技术和理论.