gpt4 book ai didi

c# - XNA (3.1) DrawUserPrimitives 和 SpriteBatch alpha 问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:38 25 4
gpt4 key购买 nike

我正在使用 XNA 3.1 制作一些东西,并且我正在尝试使用 DrawUserPrimitives 创建 2D 功能区轨迹。我的算法简单地在每一帧添加新的顶点(假设发生了一些移动),并且还遍历顶点并随着它的推移淡出它们,删除不需要的顶点。这工作得很好,除了我对很多其他图形使用 SpriteBatch。现在,我将整个屏幕绘制到 RenderTarget2D(出于各种原因,我无法避免),并且遇到了这个奇怪的 alpha 问题。

我遇到的问题是这样的:

Trail is clearly not behaving correctly

这应该是一条白色轨迹,随着它的移动逐渐消失。显然这不会发生。相反,它逐渐褪色为图形设备的清晰颜色。绘制这条轨迹时,我暂停了 SpriteBatch(通过调用 End(),然后在绘制完成后调用 Begin()),以便获得正确的深度。我用来绘制图元的效果只是一个 BasicEffect,没有什么特别之处,初始化 SpriteBatch 的代码在这里:

        spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.SaveState);
graphics.GraphicsDevice.RenderState.SeparateAlphaBlendEnabled = true;
graphics.GraphicsDevice.RenderState.AlphaDestinationBlend = Blend.One;
graphics.GraphicsDevice.RenderState.AlphaSourceBlend = Blend.SourceAlpha;
graphics.GraphicsDevice.RenderState.SourceBlend = Blend.SourceAlpha;
graphics.GraphicsDevice.RenderState.DestinationBlend = Blend.InverseSourceAlpha;

初始化 SpriteBatch 后的设置可确保 RenderTarget 纹理中半透明的正确着色。我的猜测是这里的某些东西导致了这个问题,但我不确定是什么。如果有人能帮我解决这个问题,我将不胜感激。

干杯。

最佳答案

哦...我修好了。需要将 SaveStateMode.SaveState 换成 SaveStateMode.None。

仍然想知道为什么我不能对其进行抗锯齿...

关于c# - XNA (3.1) DrawUserPrimitives 和 SpriteBatch alpha 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com