2011-07-20 63 views

回答

1

OpenGL沒有內置任何字體渲染。在大多數平臺上,您可以調用特定於平臺的調用來在OpenGL顯示(或其周圍)上呈現文本,這可能是這些教程正在做的事情。如果你想讓文本成爲你的OpenGL場景的一部分,你需要推出你自己的。

常用的方法是使用現有的字體渲染庫(比如freetype),將文本渲染爲位圖,並將其用作紋理。

如果你需要渲染大量的文本,你可能會更好地將單個字形轉換爲紋理;渲染一個字形然後需要一個四邊形(並且可以使用通常的優化來使其渲染得更快)。

而不是TTF/OTF字體,你當然也可以使用預先渲染的位圖;這在運行時不需要字體渲染庫,但它不會允許您動態更改字體大小(儘管您當然可以渲染文本的拉伸實例)。

另一種選擇:libcairo似乎有一個(實驗性的)OpenGL後端,所以也許值得一試。

1

儘管你已經alreydy接受的答案,我想向你指出:

http://www.angelcode.com/products/bmfont/

我使用生成的字體在我的圖書館,它是很容易集成和你沒有讓您的應用程序依賴於另一個庫。它會生成一個帶有字體和文件的紋理來解析。 然後,在繪製任何字體之前,將紋理綁定到opengl,然後使用該字形的子紋理座標繪製每個字形的四邊形(精靈)。你從生成的文件中獲得它們。

見我執行此:

http://code.google.com/p/nightlight2d/source/browse/trunk/NightLightDLL/NLFont.cpp

隨意使用它。 願源可與你同在。