更改RenderTarget导致紫屏?我试图在运行时更改RenderTargets,因此我可以在运行时绘制一些元素,操作它们,然后最终将纹理绘制到屏幕上。问题是,如果我在运行时更改RenderTarget,屏幕会变成紫色。这是我在Draw中得到的代码:RenderTarget2DtempTarget=newRenderTarget2D(GraphicsDevice,128,128,1,GraphicsDevice.DisplayMode.Format,GraphicsDevice.PresentationParameters.MultiSampleType,GraphicsDevice.PresentationParameters.MultiSampleQuality,RenderTargetUsage.PreserveContents);GraphicsDevice.SetRenderTarget(0,tempTarget);GraphicsDevice.Clear(ClearOptions.Target,Color.SpringGreen,0,0);GraphicsDevice.SetRenderTarget(0,null);如果我在运行时创建RenderTarget似乎无关紧要(我确实需要创建内存中纹理并使用SpriteBatch绘制它们),这会导致完全紫色的屏幕。我应该怎么做才能解决这个问题?看起来你最好的选择是在Draw之外的某个地方创建RenderTarget,在Update期间绘制它,保存生成的纹理(并根据需要对其进行操作),然后在Draw期间绘制该纹理。我知道这已经晚了,但解决方案是在清除屏幕并开始绘制其他项目之前写入RenderTarget。protectedoverridevoidDraw(GameTimegameTime){GraphicsDevice.SetRenderTarget(_renderTarget);//...//对指定目标进行渲染//...GraphicsDevice.SetRenderTarget(null);GraphicsDevice.Clear(Color.CornflowerBlue);//...//绘制到用户屏幕的代码在此处//...}这应该会阻止您像其他人建议的那样在Update方法中呈现,这在很多方面都是违反直觉的。当spritebatch.End()被调用时,对象被写入后备缓冲区或在您的情况下写入tempTarget。做贴图,那就用render2d以上是C#学习教程:ChangeRenderTargetresultinpurplescreen?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
