0

在其他几种情况下,在 2D(Android 的 Canvas、GDI 的图形)中,我曾经在调用绘图方法之前剪辑我的绘图。

我如何使用 XNA 实现这一目标?

由于我正在绘制一些图元DrawUserPrimitive,但还没有找到任何方法来剪辑这些图元。可能吗?如何?

改变视口或类似的东西会允许这样做吗?使用 aBasicEffect时,还有World,ViewProjection矩阵。我还没有深入研究这些。

4

1 回答 1

1

一个。您可以更改视口

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

湾。您可以使用剪刀矩形...设置启用剪刀测试的光栅化状态...

 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 回答