一般的な質問:
シェーダー パラメータ (たとえば、レーザー幅など) に基づいて、何かを描画するためにエフェクトに渡す頂点のリストがあるとします。同じ頂点を渡したいのですが、異なるシェーダー パラメーターを使用します。ただし、これは機能しません。
問題のコードは次のとおりです。
foreach (EffectPass pass in quinticFX.CurrentTechnique.Passes)
{
quinticFX.Parameters["NumPoints"].SetValue(CurvedVertices.Count());
pass.Apply();
GraphicsDevice.SamplerStates[0] = LinearMirrorState;
GraphicsDevice.Textures[0] = solid;
quinticFX.Parameters["radiusOfBeam"].SetValue(8);
GraphicsDevice.DrawUserPrimitives<VertexPositionTexture>(PrimitiveType.TriangleStrip, CurvedVertices.ToArray(), 0, CurvedVertices.Count() - 2);
pass.Apply();
quinticFX.Parameters["radiusOfBeam"].SetValue(4);
quinticFX.Parameters["P"].SetValue(cp1);
GraphicsDevice.DrawUserPrimitives<VertexPositionTexture>(PrimitiveType.TriangleStrip, CurvedVertices.ToArray(), 0, CurvedVertices .Count() - 2);
}
私はあなたがこれを行うことができると仮定し、異なる制御点と幅で 2 回 (この場合は曲線) を描画します。これは当てはまりません。最新のプリミティブ セットのみが描画されます。どんな助けでも大歓迎です。