我们SamplerState.LinearWrap
过去常常在游戏中平铺很多东西。我们的游戏共享一个SpriteBatch
对象,调用Begin()
如下:
_spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearWrap, DepthStencilState.None, _rasterState);
这适用于 Windows 上的 XNA 以及 iOS 上的 MonoGame。
问题是,在 Android 上,如果打开 LinearWrap,任何非二次幂大小的纹理都会呈现为黑色矩形,即使它是以不需要包裹的方式绘制的。如果我们切换到SamplerState.LinearClamp
(默认),这些纹理在 Android 上不再呈现黑色。通常,如果您尝试平铺它们(在其他平台上),两个纹理的非幂次方会留下空白空间,直到下一个最大的二次方幂。
这是 Android 上 OpenGL 的限制,还是 MonoGame 中的问题?我不想将每个纹理的大小调整为 2 的幂,但如果这是唯一的选择(或者有充分的理由),我们会这样做。