C# XNA 如何更改整个Texture2D 的alpha?
是否可以永久更改纹理的 alpha 值而不将其渲染到另一个表面?
Is it possible to permanently change the alpha value of a texture without rendering it into another surface ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
Texture2D.GetData()
和Texture2D.SetData()
并覆盖 alpha 值。编辑:
当使用带有预乘 alpha 的纹理时,此方法可能有点棘手。
You could use
Texture2D.GetData<Color>()
andTexture2D.SetData<Color>()
and overwrite the alpha value.Edit:
This method could be a bit tricky when using Textures with premultiplied alpha.
如果您需要更改游戏中的透明度,只需将 Color.White 乘以您希望其透明的数量即可。这几乎没有额外的开销,因为像素颜色值已经乘以传递给绘制函数的颜色。每个循环只需额外 1 次翻牌。
If you need to change the transparency in game simply multiply Color.White by the amount you want it to be transparent. This has almost no additional overhead as the pixels color values are already being multiplied by what color you pass into the draw function. Its simply 1 additional flop per loop.