2010-04-08 131 views
0

我已經遍佈各地,但找不到很多渲染字符串到紋理,然後在屏幕上的四邊形上顯示該紋理。有人可以在流程中提供破解或提供描述如何的好資源嗎?即使是在Android OpenGL ES應用程序中顯示文本的最佳方法,是否將字符串呈現爲紋理?將字符串渲染到Android和OpenGL ES中的紋理

編輯: 好吧,所以LabelMaker會干擾alpha混合,紋理(從具有透明背景的PNG創建)現在具有純黑色背景,而不是透明背景。如果我註釋掉所有與LabelMaker相關的代碼,它就可以正常工作。

更新: 沒關係。我查看了代碼,發現LabelMaker在繪製標籤後禁用了混合。

回答

1

我認爲this是你在找什麼。

+0

是的,發現更早但想知道是否有一個更簡單的方法。我想我會把課程複製到我的項目中,並從那裏開始工作。 – Eddie 2010-04-08 16:08:59

+0

好吧,所以LabelMaker會干擾alpha混合,紋理(從具有透明背景的PNG創建)現在具有純黑色背景,而不是透明背景。如果我註釋掉所有與LabelMaker相關的代碼,它就可以正常工作。 – Eddie 2010-04-08 17:37:57

+0

您好,任何人都有LabelMaker的工作副本?該博客文章中的src鏈接似乎不再有效。 – twig 2012-07-26 04:52:41

0

如果您不想使用GL擴展名,則需要將該字體創建爲位圖,然後創建一個類以將該字符串轉換爲可以繪製的四邊形。

我在我的遊戲中使用了2種字體的這種方法。我有一個類需要一個寬大的紋理,所有的字母均勻分佈,還有一個字符串與圖像匹配,然後使用查找字母來找出位圖應該走多遠。

您的其他選擇是使用android將文本渲染到離屏位圖,然後將文本綁定爲紋理。這會讓你使用android內置的字體處理和渲染來創建基於紋理的字體。

第二種方法我還沒有使用,但我已經將谷歌地圖渲染到屏幕外的畫布上,然後將位圖作爲GL紋理進行綁定,因此對文本進行處理應該簡單得多。

如果您打算修改gl循環中的字符串數據,您還需要非常擔心StringBuilder,因爲它會導致GC和性能問題。我硬編碼我的所有字符串,所以它不分配,我所有的快速數字都是通過第二個繪製函數完成的,專用於繪製不需要使用字符串生成器的數字。

+0

我實際上在我的代碼中更新了這個。我現在使用一個叫做位圖字體生成器的程序來生成壓縮的fontmaps和xml文件,這些文件定義瞭如何繪製它們。它比手工做得更好。 – HaMMeReD 2010-12-13 06:25:41