Xna 剪直和标度矩阵

Xna 剪直和标度矩阵,xna,Xna,我已经完成了启用ScissorTestEnable和ScissorRectangle的示例。它很好用。但是,当我应用ScaleMatrix时,剪裁似乎不再有效。这些应该一起工作吗?您可能正在使用SpriteBatch,对吗?在我看来,肖恩·哈格里夫斯(Shawn Hargreaves)可能是你想要的答案。您是否尝试过移动设置剪刀矩形的呼叫以查看它是否开始工作?我试图查看Microsoft.Xna.Framework.Graphics的反编译源代码,但在GraphicsDevice.set_Sci

我已经完成了启用ScissorTestEnable和ScissorRectangle的示例。它很好用。但是,当我应用ScaleMatrix时,剪裁似乎不再有效。这些应该一起工作吗?

您可能正在使用SpriteBatch,对吗?在我看来,肖恩·哈格里夫斯(Shawn Hargreaves)可能是你想要的答案。您是否尝试过移动设置剪刀矩形的呼叫以查看它是否开始工作?我试图查看Microsoft.Xna.Framework.Graphics的反编译源代码,但在GraphicsDevice.set_ScissorRectangle和SpriteBatch的刷新方法之间找不到任何关系:


如果不起作用,您还可以尝试使用修改的投影和视口调用替换缩放和剪刀,然后在每个玩家的屏幕中渲染对象。

您的意思是对渲染的对象应用一些缩放?这里的比例是多少?抱歉,一次做的事情太多了。这是一个2D游戏。我为每个玩家创建一个屏幕。对手屏幕被缩放并放置在玩家屏幕的右上角。我想能够剪辑这个缩放屏幕上的图形。ScaleMatrix适用于我绘制的精灵和图形,因此它们是正确的,但在缩放并“出血”过缩小的屏幕后,它们不再被剪裁。你找到解决方案了吗?我也有同样的问题。我现在正在使用SpriteBatch,我在创建SpriteBatch之前调用了GraphicsDevice。根据我是否希望对手的屏幕在上角是全尺寸还是缩小,我是否使用ScaleMatrix调用Spritebatch。当我称之为没有ScaleMatix时,剪刀矩形就可以工作了。当我调用ScaleMatrix时,剪刀矩形不会。我认为这是我的错误,但如果两人没有很好地配合,我不想花很多时间去追求这一点。