如何尽快在DirectX 9中使用D3DXSprite绘制D3DXFont?

时间:2013-12-25 21:55:51

标签: c++ directx direct3d directx-9

我有很多要绘制的文字。如果我用第一个参数为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分钟。问题只在于文字绘图的东西。

1 个答案:

答案 0 :(得分:1)

当然,您必须在优化之前对应用程序进行概要分析,但事实是,D3DXFont / D3DXSprites和“fast”是相互排斥的概念。如果它们不合适,就不要使用它们。 使用第三方库或制作自己的精灵/字体渲染器。

最近我在这里回答了如何做到这一点:How to draw line and font without D3DX9 in DirectX 9? 此外,谷歌为“精灵字体”,“精灵批处理”,“纹理地图集”,“TTF渲染”。如果你熟悉API(特别是顶点缓冲和纹理)并不是很困难,网上有很多例子。不要犹豫,寻找D3D11或OpenGL的例子,原理是一样的。