这可能是一个奇怪的问题,但是我试图找到一种方法,仅在特定的允许区域内而不是整个缓冲区/纹理内渲染精灵。
基本上可以像往常一样绘制缓冲区或Texture2D,但是实际绘制仅在此指定区域内进行,而其外部其余像素保持不变。
为什么需要这样做-我正在构建自己的UI系统,并且我想避免使用中间缓冲区,因为当屏幕上有许多UI组件时,它非常慢(并且每个组件都必须绘制自己的缓冲区才能使用)防止将子元素绘制在父边界之外。
只是要澄清-这都是为了简单的2D渲染,而不是3D。
答案 0 :(得分:0)
如果您的UI实际上是使用SpriteBatch绘制的,则可以使用ScissorRectangle
GraphicsDevice.RasterizerState.ScissorTestEnable = true;
spriteBatch.GraphicsDevice.ScissorRectangle = ...
在3D中,您可以渲染到纹理并仅绘制纹理的一部分-或使用着色器(实际上,您可以仅将尺寸作为参数发送,如果Pixel不在该Rectangle中,则可以在PixelShader中将其设置为黑色(或您想要完成的任何事情)
答案 1 :(得分:0)
您可以使用:
ZoneId.systemDefault()
然后它将仅绘制您之前选择的区域。希望这会有所帮助!