私はDirect2D
ネイティブアプリケーションC++
で書かれています。レンダー機能は1秒間に約60回呼び出され、約1,000の図形(基本的に楕円形)を表示することを目的としています。レンダリング機能のコードを以下に示します。Direct2DレンダリングのCPU使用率
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);
}
ブラシは、楕円と変換が始まり(エンティティconstrucor)で作成されます。
私の質問は、これらのパラメータで私のCPUが常に約8/9%であることが正常である場合です。私は0に近い値を期待していたでしょう(たとえUpdate関数が常に呼び出されたとしても、CPU使用率が0になるレンダリング関数にコメントすると)。