0

我已将 Bloom 示例中的两个 Bloom 类放入我的项目中,并遵循与示例相同的步骤,尽管当我启动项目时,我现在得到的只是一个空白的紫色屏幕?

我没有收到错误或任何错误,我所做的只是将示例中的两个bloom类包含在内,将其添加为组件并将开始绘制调用放置在我的主绘制函数中,就像在示例中一样。我的项目中有其他渲染目标,但不一定会立即使用它们。如果我拿出花朵的东西,一切都正常。一旦我调用 begindraw() 函数,我得到的只是臭名昭著的空白紫色屏幕......

有谁知道我为什么会得到这个?

  • 杰米。
4

1 回答 1

1

诊断此类问题的最佳方法是使用 PIX(在 DirectX SDK 中)。

紫色表示渲染目标内容已被框架清除。这篇博文解释了原因并提供了一些解决方案。

简而言之,您不能将内容绘制到后台缓冲区,切换到渲染目标,然后再次切换到后台缓冲区并期望绘制的内容仍然存在。至少在 Xbox 360 上没有——XNA 框架的 PC 版本模拟了这种行为。

如果您希望能够切换回后台缓冲区并使其安然无恙,您可以RenderTargetUsage将后台缓冲区(或渲染目标,取决于您的渲染方式)的设置更改为PreserveContents,如下所述博客文章。请注意,在 Xbox 360 上,这是一个巨大的性能冲击。

一种可能更好、更兼容的方法是调整绘图的顺序,这样您就不必“返回”到表面。

链接到类似的最近的问题/答案。)

于 2011-02-23T13:45:52.523 回答