Как уменьшить использование GPU в приложении XAML Direct3D?

#c# #windows-phone-8 #directx #direct3d

#c# #windows-phone-8 #directx #direct3d

Вопрос:

Я разрабатываю приложение, которое использует Direct3D для рисования маршрутов на карте. Я заметил, что мой телефон очень горячий, когда показывает Direct3D. Я попытался уменьшить вызовы рисования, чтобы уменьшить загрузку графического процессора, установив для contentdirty в PrepareResource значение false. Таким образом, метод рисования больше не вызывается, к сожалению, телефон все еще горячий.

Есть способ уменьшить использование графического процессора?

 HRESULT Direct3DInterop::PrepareResources(_In_ const LARGE_INTEGER* presentTargetTime, _Out_ BOOL* contentDirty)
{
    UNREFERENCED_PARAMETER(presentTargetTime);

    if (m_renderer != nullptr
        amp;amp; m_renderer->IsDirty)
    {
        *contentDirty = true;
    }

    return S_OK;
}

HRESULT Direct3DInterop::GetTexture(_In_ const DrawingSurfaceSizeF* size, _Inout_ IDrawingSurfaceSynchronizedTextureNative** synchronizedTexture, _Inout_ DrawingSurfaceRectF* textureSubRectangle)
{
    UNREFERENCED_PARAMETER(size);
    UNREFERENCED_PARAMETER(synchronizedTexture);
    UNREFERENCED_PARAMETER(textureSubRectangle);

    m_renderer->Render();
    return S_OK;
}
  

Комментарии:

1. По *contentDirty умолчанию значение false? Я вижу, что вы устанавливаете значение true. Кроме того, вы проверили, правильно ли m_renderer->IsDirty работает?

2. Да, я проверил, что значение *contentDirty по умолчанию равно false . Я проверил, что реальный метод рендеринга вызывается правильно, когда это действительно требуется.