【问题标题】:DirectX 11 SwapChain::Present issueDirectX 11 SwapChain::当前问题
【发布时间】:2011-06-12 14:20:56
【问题描述】:

我手头有一个很奇怪的问题。 我正在使用 directx 11 来制作我自己的游戏框架/引擎,它一直运行良好,直到我尝试实现平截头体剔除,这给了我非常奇怪的帧率问题。

我已经稍微简化了这个问题,所以它不需要我做任何平截头体剔除就可以发生。现在我的屏幕上渲染了 250 个模型,调试中为 70 fps。我已经做到了,如果我按住按钮 H 它会跳过我的模型在我的 Application::Render 中的渲染,但是如果我这样做然后再次松开按钮,我的帧率在大多数情况下都会达到 40 左右甚至大约 4 fps。分析向我展示了它是 SwapChain::Present,它突然花费了比以往更长的时间。

在 Release 中,这是同样的问题,只有当我附加了调试器时才会发生这种情况。这个我自己也搞不清楚。

尝试重建和重启。

我现在的功能:

m_pSwapChain->Present( 0, 0);

我的应用程序::渲染函数:

void CApplication::Render() const
{
    CD3D::Instance()->BeginRender();

    //Render 3d
    if ( !CInputSystem::Instance()->IsKeyPressed('H'))
    {
        std::vector<CPlanet*>::const_iterator it;
        for (it = m_Planets.begin(); it != m_Planets.end(); ++it)
        {
            (*it)->Render();
        }
    }
    // Render 2d
    m_pScreenSprite->Render();

    CTextSystem::Instance()->Render2D();
    CD3D::Instance()->EndRender();
}

这是在按 H 停止渲染模型之前我的分析的样子:

[Profiler] BeginRender: 2.830984218768823e-005
[Profiler] Models::Render: 1.4456089627755692e-005
[Profiler] Text|Sprite ::Render: 0.00015811348030357787
[Profiler] EndRender: 0.00018853150222864715
[Profiler] CApplication::Render(): 0.00067612335863149022

在我按下 H 键一秒钟后松开它,模型再次被渲染:

[Profiler] BeginRender: 2.4996988314660883e-005
[Profiler] Models::Render: 0.0091422720154198285
[Profiler] Text|Sprite ::Render: 0.00011655222262378027
[Profiler] EndRender: 0.2590757137694254
[Profiler] CApplication::Render(): 0.26870557764124803

我也尝试过,不是在按 H 时不渲染模型,而是在按 C 时创建一个具有相同效果的新模型。因此,如果渲染的模型数量在运行时以任何方式发生变化,我的帧率就会发疯。

如果我有 fraps 正在运行,则不会发生这种情况(要捕获该行为以便您可以看到它)。不知道这是什么线索。

已修复!看看下面的评论

【问题讨论】:

  • 问题解决了,我应该早点想到这个,FML。当我将驱动程序升级到 11 天前推出的驱动程序时,现在工作正常(我上次升级它们只是 1-2 个月前)。现在运行良好,fpsdrops 在其他游戏中也消失了。
  • 您可以自己发布答案并将其设置为解决方案。
  • 谢谢,但我要等到我提出问题 8 小时后才能提出问题,因为我对这个网站还很陌生。

标签: render frame-rate directx-11


【解决方案1】:

我终于可以回答我自己的问题了(不得不等待 8 小时)

问题解决了,我应该早点想到这个的,FML。当我将驱动程序升级到 11 天前推出的驱动程序时,现在工作正常(我上次升级它们只是 1-2 个月前)。现在运行良好,fpsdrops 在其他游戏中也消失了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-18
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多