我有很多文字要画。如果我在第一个参数为 NULL 的情况下调用 D3DXFont::DrawText,我会得到糟糕的性能。
我听说将 D3DXFont 与 D3DXSprites 结合使用可以使事情变得更快。
我的应用程序需要如何绘制字符串? 它用伪阴影绘制每个字符串。这意味着我用黑色画了每根弦 4 次: x + 1, y + 1 x - 1, y + 1 x - 1, y - 1 x + 1, y - 1 和 1 次实际颜色。它使看起来非常漂亮且始终可读的字符串成为可能。我什至切换到像素字体以加快渲染速度。
现在用阴影调用该字符串 (ShadowString)。
我在屏幕上绘制 256 个(最坏情况)ShadowStrings 的每一帧。
我想知道如何使用 sprite(或任何其他技术)尽可能加快这些字符串的绘制速度。现在我在应用程序中获得 30 FPS。但我的目标是 120 分钟。问题仅在于文字绘图。
最佳答案
当然,您必须在进行任何优化之前分析您的应用程序,但说实话,D3DXFont
/D3DXSprites
和“快速”是相互排斥的概念。如果它们不合适,就不要使用它们。
使用第 3 方库或制作您自己的 Sprite /字体渲染器。
最近我在这里回答了如何做:How to draw line and font without D3DX9 in DirectX 9? 此外,谷歌搜索“sprite font”、“sprite batching”、“texture atlases”、“TTF rendering”。如果您熟悉 API(尤其是顶点缓冲区和纹理),这不是很难,并且网络上有很多示例。不要犹豫,寻找 D3D11 或 OpenGL 示例,原理是相同的。
关于c++ - 如何在 DirectX 9 中使用 D3DXSprite 尽可能快地绘制 D3DXFont?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20777082/