Ich habe eine Direct2D
native Anwendung in C++
geschrieben. Die Renderfunktion wird etwa 60 Mal pro Sekunde aufgerufen und soll etwa 1000 Grafikgeometrien (im Wesentlichen Ellipsen) anzeigen. Im Anschluss wird der Code der Rendering-Funktion:Direct2D Rendering CPU-Auslastung
void Render()
{
pRenderTarget->BeginDraw();
pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::Black));
const auto transform = D2D1::Matrix3x2F::Identity();
pRenderTarget->SetTransform(transform);
// draw all entities
for (auto& e : entities)
{
if (e)
e->Draw(pRenderTarget, transform);
}
pRenderTarget->EndDraw();
}
void Entity::Draw(ID2D1RenderTarget* pTarget, const D2D1_MATRIX_3X2_F& worldTransform) const
{
pTarget->SetTransform(transform * worldTransform);
pTarget->FillEllipse(ellipse, pBrush);
pTarget->SetTransform(worldTransform);
}
Bürsten, Ellipsen und Transformationen werden zu Beginn (entity construcor) erstellt.
Meine Frage ist, wenn es normal ist, dass mit diesen Parametern meine CPU immer um 8/9% ist. Ich hätte einen Wert nahe 0 erwartet (wenn ich die Renderfunktion kommentiere, sinkt die CPU-Auslastung auf 0, selbst wenn die Update-Funktion zum Beispiel immer aufgerufen wird).