我必須擴展OpenGL-Rendering系統以支持國際字符(特別是希伯來語,阿拉伯語和西里爾語)。opengl中的多語言Unicode渲染
開發平臺是Windows(XP | Vista的| 7),唉使用Embercardero德爾福2010年
我目前使用wglOutLineFont(...)來構建我的字體的顯示列表和glCallLists(length(m_Text), UNSIGNED_SHORT, PWchar(m_Text))
來呈現我的琴絃。
雖然這對Latin-1字符是可行的,但事先構建完整的Unicode字符集非常耗時(我的機器上大約需要8.5分鐘),所以我正在尋找更高效的解決方案。我考慮將範圍從u + 0020 - u + 077f(拉丁文,希臘文,西里爾文,阿拉伯文和希伯來文)限制爲僅包括我需要的字形,但這僅僅是我當前需求的解決方案,並且一旦變得不足其他編碼是需要的。
好的,我不必擔心從左到右或從右到左的方向,因爲我們的應用程序已經可以處理這個問題了。
我認爲這是一個衆所周知的問題,所以我想問一下網上是否有這方面的參考資料,或者如果您可以分享一些有關這方面的見解?
編輯 澄清:我使用多邊形字體表示。每個字體預先以單元大小(1.0)構建,並在渲染前使用glScalef(...)
進行適當縮放。由於用戶可能會非常仔細地放大(應用程序用於CAD),所以我決定不進行預柵格化處理,因此可以看到柵格化的工件。另外,由於場景很少超過幾百個字符(主要是標籤和測量值),所以預柵格化的速度增益可忽略不計。
使用頂點緩衝對象會非常好!字體柵格可以高分辨率,然後使用mipmap和多重採樣。 – Luca 2010-03-15 21:23:59
所以你的意思是我應該生成列表,一旦我知道哪些字符,我將需要繪製給定的字符串? – sum1stolemyname 2010-03-16 06:52:15
是的。面對類似的問題 - 並使用OpenType庫(對於平臺標識而不是wgl),我們使用渲染包含文字渲染的柵格化紋理進行渲染。然後,我們緩存可見的單詞,並丟棄任何已經在屏幕上滾動的單詞。 我們的應用程序只顯示少量文本,沒有非常複雜的格式要求,但有足夠的潛在文本預渲染它會導致明顯的延遲。 – 2010-03-16 07:39:15