【发布时间】:2012-08-01 16:43:25
【问题描述】:
我们使用SamplerState.LinearWrap 来平铺我们游戏中的很多东西。我们的游戏共享一个SpriteBatch 对象,并像这样调用Begin():
_spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearWrap, DepthStencilState.None, _rasterState);
这适用于 Windows 上的 XNA 以及 iOS 上的 MonoGame。
问题是,在 Android 上,如果启用了 LinearWrap,任何非两倍大小的纹理都会呈现为黑色矩形,即使它是以不需要包裹的方式绘制的。如果我们切换到 SamplerState.LinearClamp(默认),这些纹理在 Android 上不再呈现黑色。通常,如果您尝试平铺它们(在其他平台上),两个纹理的非幂次方会留下空白空间,直到下一个最大的 2 次方。
这是 OpenGL 在 Android 上的限制,还是 MonoGame 中的问题?我不想将每个纹理的大小调整为 2 的幂,但如果这是唯一的选择(或者有充分的理由),我们会这样做。
【问题讨论】:
标签: c# android .net xamarin.android monogame