#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 . Я проверил, что реальный метод рендеринга вызывается правильно, когда это действительно требуется.