私は実際に C# と xna を使用して小さな 3D ゲームを作成しています。かなり遅くなってきているものがあるので、これらの最適化を始めています。
複数のテクスチャ/サンプラーを使用するピクセル シェーダーがあります。
texture MountainTexture;
texture GrassTexture;
texture IceTexture;
texture SandTexture;
sampler moutain = sampler_state {
texture = (MountainTexture);
MinFilter = Linear;
MagFilter = Linear;
MipFilter = Linear;
AddressU = Wrap;
AddressV = Wrap;
};
sampler ice = sampler_state {
texture = (IceTexture);
...
};
sampler grass = sampler_state {
texture = (GrassTexture);
...
};
sampler sand = sampler_state {
texture = (SandTexture);
...
};
ピクセル シェーダー関数は、レンダリングされるピクセルごとにこれらのサンプラーの 1 つまたは 2 つを使用します。シェーダーが各ピクセルに対してこれらのサンプラーを 1 つだけ使用するようにすると、フレームレートが ~ x2 倍に改善されることに気付きました。
だから私は疑問に思っていました:-同じシェーダーの複数のサンプラーでtex2Dを使用すると、GPUは正確に何をしますか? なぜそんなに遅いのですか?Shader.Parameters["myTexture"].SetValue(myTexture)
-とでテクスチャを渡すことの違いは何GraphicsDevices.Texture[10] = myTexture
ですか?
複数のサンプラーでシェーダーを使用するときにパフォーマンスを向上させる方法はありますか? (テクスチャが大きすぎて、すべてを 1 つのテクスチャに収めることができません)。
どうもありがとうございました !