2010-09-10 48 views
2

在Opengl es(或opengl)方面沒有多少經驗,我希望有人能幫助我解決這個問題。使用自定義字體的文本紋理OpenGL ES

我創建一個OpenGL ES的應用程序,我希望能夠動態地創建我的按鈕等

該是2個顯而易見的原因的文本:

-to是模塊化(快速改變文本不使用的Photoshop)

-to能夠在以後添加語言上下行

任何人可以點我的教程,或者至少給我的基本步驟/功能:

  • 創建紋理格式文本

  • 加載自定義的字體來顯示文本的紋理與所選擇的自定義字體

  • 說明我是否可以使用此加載漢字?

問候

賈森·羅傑斯

回答

3

我不知道這是不是最好的方式,我也沒有這麼做過......但在這裏就是我會做:

  • 創建一個Paint對象,該對象將描述文本的外觀。
  • 設置字體(Paint.setTypeFace()),大小(Paint.setTextSize()),顏色等
  • 所需的參數測量使用Paint.getTextBounds()所需的位圖的大小和要繪製的字符串。
  • 使用Bitmap.createBitmap()創建一個新大小的位圖,確保它具有alpha分量。使用new Canvas(bitmap)創建的位圖創建畫布。
  • 將文本繪製到位圖:Canvas.drawText(),使用您創建的繪畫對象和所需的字符串。
  • 使用Bitmap.createScaledBitmap()將位圖縮放爲x和y中2的冪作爲下一個更大的尺寸。如果你需要的話,我有一個方便的功能(圍繞2的權力)。
  • 綁定,設置紋理參數並將位圖加載到gl使用GLUtils.texImage2D()
  • 使用紋理繪製四/ sprite;使用測量的文本尺寸適當縮放。

當然,如果您想事先做按鈕背景/按鈕文本合成,您可以使用畫布反而繪製到背景中。

我推測,無論支持的字體是什麼,Canvas.drawText()都會支持使用相應的Paint設置,對輸入到它的字符串字符(漢字或其他)也應該如此。一旦你得到了上面的方法並運行,你就可以很容易地通過試驗找到答案。

希望這有些幫助。乾杯,Aert。

2

在我們的應用程序中,我們決定使用android XML佈局而不是OpenGL ES繪製HUD(按鈕,圖標,文本)。

有針對severals原因:

  • XML佈局的所有功能和控件可開箱
  • 好辦了點擊和屏幕旋轉
  • 不需要創建/調整紋理
  • 外的現成支持資源文件夾(多語言)的

要做到這一點,你僅僅侷限於N請將GlSurfaceView作爲子視圖添加到您的主視圖中。