2012-03-18 10 views
8

こんにちは私はそれがクロスプラットフォームの機能のため、Firemonkeyを使用しています。私はパーティクルシステムをレンダリングしたい。今私は粒子を高速で表示するのに十分うまく働くTMeshを使用しています。各粒子は、2つのテクスチャリングされた三角形を介してメッシュ内に表される。異なるテクスチャ座標を使用して、同じメッシュで多くの異なるパーティクルタイプを表示できます。問題は、すべてのパーティクルが独自の透明度/不透明度を持つことができることです。私の現在のアプローチでは、各三角形(または頂点)に対して個別に透明度を設定することはできません。私に何ができる?何千ものスプライトを異なる透明度で描画するには?

TMesh.Data.VertexBufferにDiffuseや他のテクスチャセット(TexCoord1-3)のようないくつかのプロパティがあることに気づきましたが、これらのプロパティはTMeshで使用されていません。 TMeshを継承してこの振る舞いを単純に変更することも容易ではないようです。より多くのプロパティでVertextBufferを初期化するために、より低いレベルのコントロールから継承する必要があるようです。それを試す前に、それを使って三角形の透明度を制御することが可能かどうかを質問したいと思います。例えば。私は透明な色(拡散)を設定することができますか透明なテクスチャ(TextCoor1)を使用できますか?あるいは、Firemonkeyにパーティクルを描画するためのより良い方法があります。

+2

「透明な色を設定することも、透明なテクスチャを使用することもできますか?」なぜそれを試してみませんか?それから戻ってきて教えてください。 – Ben

答えて

0

私はその特定のフレームワークについてあまり知らないと思っていますが、3Dモデルの頂点で透明度を変更することはできません。ポイントは通常x、y、z座標です。さて、照明システムを使用している場合、頂点はスプライトがどのように点灯するかに影響します。頂点情報を使用して異なる透明効果を適用することもできます

ここでは、おそらくこれを行う方法が12種類あります。通常、実行時に設定できるアルファ値の度合いが異なるテクスチャがあります。グラフィックスAPIには、スプライト/テクスチャに素早く値を適用できるフィルタリング機能があり、グラフィックスチップがあればそれを使用します。

エフェクトを使用することができれば、原則的にスプライトのさまざまなコピーを作って個別にエフェクトを適用する方が良いからです。 Gouraud Shadingを使用している場合、Gouraudはコードを使用してテクスチャ情報を埋め込むので、より簡単になります。

今、軽い粒子を使用していますか?いくつかのグラフィックスAPIは実際に軽い粒子を作るコードを持っています。

編集:私はちょうどVertex Shadersを思い出しました。

関連する問題