3

フレームレートをクロールまで遅くしないSFMLでプラズマ効果を作成する方法はありますか?

4

2 に答える 2

4

1)バイト(またはターゲットの色深度に応じてint /その他)配列としてメモリ内の画像ビットを直接操作します。毎回画像からGetsPixel()を使用するものは使用しないでください。

2)数学を最小限に抑えます。プラズマ効果の場合、通常、 1秒あたりの回数(高さのフレームレート)を実行するとかなり遅い多くの三角関数を使用します。計算には高速の専用数学ライブラリを使用するか、さらに良いことに、開始時に計算をキャッシュし、エフェクト中にルックアップテーブルを使用して、各フレームから数学を完全に切り取ります。

3)昔ながらのプラズマ効果を非常に速く実行させたものの1つは、パレットサイクリングでした。これ(または一般的なパレット)をSFMLで直接複製する方法はわかりませんが、GLSLシェーダーを使用すると、パフォーマンスに大きな影響を与えることなく同じ種類の結果を得ることができます。このようなもの:

float4 PS_ColorShift(float2 Tex : TEXCOORD0) : COLOR0 
{ 
    float4 color = tex2D(colorMap, Tex);

    color.r = color.r+sin(colorshift_timer+0.01f);
    color.g = color.g+sin(colorshift_timer+0.02f);
    color.b = color.b+sin(colorshift_timer+0.03f);
    color.a = 1.0f;

    saturate(color);

    return color;
}
于 2010-09-21T01:19:08.780 に答える
1

RAMでプラズマ効果を作成し、それをテクスチャに配置してアップロードできますか?シェーダー効果ではありませんが、プラズマ効果が得られます。

于 2010-05-16T19:44:59.230 に答える