0

他のいくつかのコンテキストでは、2D(Android'Canvas、GDI' Graphics)で、描画メソッドを呼び出す前に描画をクリップしていました。

XNAでこれをどのように達成できますか?

おかげでいくつかのプリミティブを描画しDrawUserPrimitiveていますが、これらのプリミティブをクリップする方法はまだ見つかりません。出来ますか?どのように?

ビューポートなどを変更すると、これが可能になりますか?を使用する場合は、、、および行列BasicEffectもあります。私はまだこれらを掘り下げていません。WorldViewProjection

4

1 に答える 1

1

a。ビューポートを変更できます

 GraphicsDevice.Viewport = yourCamera.Viewport;   
 GraphicsDevice.Viewport = new Viewport(yourClippingArea);

b。シザー長方形を使用できます...シザーテストを有効にしてラスタライザーの状態を設定します...

 GraphicsDevice.ScissorRectangle = yourClippingArea;    
 GraphicsDevice.RasterizerState = 
     new RasterizerState( ) { ScissorTestEnabled = true };

c。ステンシルバッファとステンシル操作を使用できます。基本的に、この方法はマスクを作成して適用することです。

d。描画する前にクリップできます...

 (2D)
 if (yourCamera.WorldBounds.Intersects( sprite.WorldBounds )
 {
    sprite.Draw();
 }

 (3D)
 BoundingFrustum boundingFrustum = new BoundingFrustum( yourCamera.ViewProjection );

 if (boundingFrustum.Contains(model.BoundingSphere)
 {
    mode.Draw();
 }
于 2012-08-16T21:49:07.303 に答える