簡體   English   中英

iOS-使用OpenGL ES 2.0顯示文本

[英]iOS - Displaying text with OpenGL ES 2.0

令人驚訝的是,要使用OpenGL ES 2.0顯示文本,我付出了很多努力。 在stackoverflow上有大量帖子,討論了該主題,顯示了幾行代碼,或者顯示了2010年的鏈接,但它們使用的是OpenGL ES 1.x(不兼容)。

但是它們非常模糊,據我所知,尚無完整的代碼或使用版本2顯示文本的便捷方法。

您知道是否有一種現代的文本顯示方式嗎? 就像只是添加一個pod並編寫類似的東西?

[font drawText:@"This is a text" size:@12];

在此先感謝您,非常感謝您的幫助。

編輯1:由於內部原因,我必須使用OpenGL 2.0,並且不能使用其他功能。

編輯2:我發現有兩個庫可以做到這一點:

這很簡單,但是是為ES1編寫的,因此我需要將代碼移植到ES2。

編輯3:ES1和ES2不同:ES2與着色器一起使用。

由於您的目標是ES2並且支持着色器,因此創建一個可以為您完成此任務的工具可能有點困難。 但是,如果您找到了這樣的工具,則可能會在很多方面與流程發生沖突,例如綁定其自己的着色器和緩沖區,使用混合設置,深度緩沖區...那么如果這樣做,您可能會遇到麻煩,因為您可能沒有可以很好地控制文本的繪制方式和繪制位置(例如在3D旋轉框上)。

但是從您的問題(如代碼段)來看,您似乎想要做的就是在文本上添加一些2D疊加層,就像使用UILabel 如果是這種情況,那么我建議您實際使用UILabel繪制這些文本。 您可以在顯示openGL內容的視圖上輕松添加所有這些視圖。

在另一種情況下,您仍然需要在3D對象上繪制文本並且想要非常容易地做到這一點,建議您仍然使用UILabel但創建其屏幕截圖並將其推送到新的(或圖集)紋理。 然后,您可以將其繪制為任何其他對象。 然后, UILabel將處理所有字體,對齊方式,顏色,多行和文字換行,字體大小調整...因此,如果您已經具有在場景中繪制紋理的系統,那么就不應該創建一個自己的工具來繪制一些紋理屏幕上顯示文本,因為您使用紋理來傳輸數據。

自OpenGL ES1起,一切都沒有改變。 通常,文本以平面投影顯示,並創建使用字體紋理進行紋理處理的四邊形。 關於這個主題有很多教程。 一個例子,如何做到這一點。 但是,從頭開始時,這是很多工作。

也許有更好的方法,但是取決於您計划做什么。 您可以將UIKit與OpenGL視圖混合使用,並使用UIKit作為覆蓋層繪制文本。 (UILabel,UIButton等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM