Ste*_*nas 8 delphi delphi-xe2 firemonkey
嗨我正在使用Firemonkey,因为它具有跨平台功能.我想渲染一个粒子系统.现在我正在使用TMesh,它可以很好地快速显示粒子.每个粒子通过两个纹理三角形在网格中表示.使用不同的纹理坐标,我可以使用相同的网格显示许多不同的粒子类型.问题是,每个粒子都有自己的透明度/不透明度.根据我目前的方法,我无法为每个三角形(甚至顶点)单独设置透明度.我能做什么?
我意识到TMesh.Data.VertexBuffer中还有一些其他属性,比如Diffuse或其他纹理集(TexCoord1-3),但这些属性在TMesh中不被使用(甚至没有初始化).通过继承TMesh简单地改变这种行为似乎并不容易.似乎必须从较低级别的控件继承以初始化具有更多属性的VertextBuffer.在我尝试之前,我想问一下是否可以控制三角形的透明度.例如,我可以设置透明色(漫反射)还是使用透明纹理(TextCoor1)?或者有更好的方法在Firemonkey中绘制粒子.
我承认我对那个特定框架了解不多,但您不应该能够通过 3D 模型中的顶点来更改透明度。这些点通常是 x、y、z 坐标。现在,如果您使用照明系统,顶点会对精灵的照明方式产生影响。您还可以使用顶点信息来应用不同的透明度效果
现在,可能有十几种不同的方法可以做到这一点。通常,您的纹理具有不同程度的 alpha 值,可以在运行时设置。图形 API 通常具有一些过滤功能,可以快速将值应用于精灵/纹理,如果有的话,一个好的 API 会使用您的图形芯片。
如果您可以使用效果,通常会更好,因为核心方法是制作精灵的一堆不同副本,然后分别对它们应用效果。如果您使用 Gouraud Shading,那么它会变得更容易,因为 Gouraud 使用代码来填充纹理信息。
现在,你使用光粒子吗?一些图形 API 实际上具有生成光粒子的代码。
编辑:我只记得顶点着色器,这可以。
| 归档时间: |
|
| 查看次数: |
900 次 |
| 最近记录: |