我正在寫一個應用程序,需要在Direct3D9中繪製大量文本 - 幾行,也許幾十行。文本可以大量格式化(即不同的字體,樣式,大小),並且可以包含來自不同字符集的unicode符號。最糟糕的是,它可以隨時改變,所以它需要動態的(一旦顯示永遠不會做)。如何渲染Direct3D9中的格式化文本?
有兩個問題:首先,我可能需要大量的D3DXCreateFont調用,這些調用的代價很大(我不確定自己)。另一種方法是在繪製多部分線之前創建所有字體,然後在它們之間切換 - 這樣更好嗎?那麼,我還可以在繪製線條時即時創建字體對象,將它們添加到某種字體對象緩存中,然後在嘗試創建新字體之前查看緩存中的字體對象?你認爲什麼是最好的方法?
第二個問題是D3DXFont似乎不理解下劃線/透視字體樣式。儘管D3DFONT基於LOGFONT,但它忽略了這些字段(儘管支持斜體)。假設我真的需要強調/突破,我該怎麼做?有沒有辦法強制ID3DXFont做下劃線?我應該自己畫這些線(我該怎麼做)?或者,也許我應該切換到在HDC上使用GDI進行繪製,然後將這些像素複製到紋理中 - 是否會提供合理的性能?
謝謝!我使用了緩存方法,工作得很好。 – himself 2010-02-09 23:22:21