首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpriteBatch绘制到后台缓冲区而不是RenderTarget?

SpriteBatch绘制到后台缓冲区而不是RenderTarget?
EN

Stack Overflow用户
提问于 2016-11-10 03:50:12
回答 1查看 891关注 0票数 0

这里有一个抽签区:

代码语言:javascript
复制
graphicsDevice.Clear(Color.CornFlowerBlue);
spriteBatch.Begin();
graphicsDevice.SetRenderTarget(renderTarget);
spriteBatch.Draw(texture2D, position, etc);
graphicsDevice.SetRenderTarget(null);
graphicsDevice.Clear(Color.Red);
spriteBatch.End();

这会在红色背景上产生我的Texture2D。为什么这会把我的Texture2D吸引到屏幕上呢?当spriteBatch.Draw被调用时,RenderTarget不是后台缓冲区,我也不会在这段代码中绘制RenderTarget。texture2D不应该显示吗?因为它是从屏幕外画出来的?另外,为什么除非我在结束spriteBatch之前清除屏幕,否则什么都不会显示(只有黑色)??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-10 05:27:45

试着像这样整理源代码,

代码语言:javascript
复制
graphicsDevice.Clear(Color.CornFlowerBlue);
graphicsDevice.SetRenderTarget(renderTarget);
spriteBatch.Begin();
spriteBatch.Draw(texture2D, position, etc);
spriteBatch.End();

根据我的经验,您需要在实际开始使用sprite批绘制之前设置呈现目标。

至于为什么您的后台缓冲区在完成时是黑色的,这是因为.SetRenderTarget(null);清除了后台缓冲区和呈现目标,这就是为什么屏幕是黑色的(没有)。您应该先完成所有的RenderTarget绘图,所以当您切换回回后台缓冲区时,它不会擦除任何东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40519668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档