我有一个用 C++
编写的 Direct2D
native 应用程序。渲染函数每秒调用大约 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,即使更新函数,例如,总是被调用)。
最佳答案
如果您的几何图形是静态的(不会改变每一帧),请查看使用 geometry realizations .这应该会显着降低渲染大量图元的 CPU 成本。如果您需要更高的性能,您也可以尝试使用 sprite batch ;这可能是渲染大量形状的最快方法,前提是您可以将形状存储在位图中并且不需要按图元抗锯齿。
关于c++ - Direct2D 渲染 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36371596/