2014-07-25 80 views
1

我在Linux平臺下學習OpenGL。最近,我嘗試使用由glutBitmapCharacter()創建的文本作爲由glu或glut提供的一些quadrics對象的紋理。但是,glutBitmapCharacter()不會返回指針,因此我無法將其送到glTexImage2D()。我已經谷歌了很長一段時間,但我發現的是一些與Android SDK相關的話題,我沒有經驗。如何在3D對象上繪製文本(如球體)

我能想到的只是使用glReadPixels()來渲染文本並將其讀取到緩衝區,然後將其保存到文件中。接下來,從文件中讀回像素並將其引用到指針。最後,用這些文本繪製3D對象作爲紋理(即將指針送入glTexImage2D())。

然而,它有點愚蠢。我想問的是:有沒有其他的替代方法呢?

回答

1

使用純OpenGL在3D表面上應用文本不是微不足道的。 GLUT不提供任何工具。一種可能的選擇是實現自己的文本渲染方法,可能使用Freetype加載字形,然後使用字形創建紋理並將該紋理應用於多邊形。 Freetype-GL是一個很小的幫助程序庫,如果你這樣做會很方便。

另一種選擇是將文本字形再次加載到紋理中,然後將它們作爲貼圖應用於幾何。這樣,您仍然可以在平面(貼圖)中模擬2D文本繪圖,然後將其應用於3D對象的頂部。