【发布时间】:2016-07-22 03:52:27
【问题描述】:
我有一个用C++ 编写的Direct2D 本机应用程序。渲染函数每秒调用大约 60 次,它旨在显示大约 1,000 个图形几何图形(基本上是椭圆)。以下是渲染函数的代码:
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);
}
画笔、椭圆和变换在开始时创建(实体构造)。
我的问题是,使用这些参数我的 CPU 始终在 8/9% 左右是否正常。我本来期望一个接近 0 的值(如果我评论渲染函数,CPU 使用率下降到 0,即使总是调用更新函数)。
【问题讨论】:
标签: c++ performance directx rendering direct2d