2012-07-06 72 views
1

我想就如何在OpenGL中快速呈現文本提出建議。OpenGL中的快速文本呈現

目前,我正在閱讀一個真正的字體類型,併爲使用的每種字體大小動態生成包含所有ASCII字符的紋理,對於每種使用的字體。每個紋理只生成一次並保留以備後用。

在繪圖階段,我將所有內容逐行繪製。

我在內存中有一個靜態數組,計算字距等,修改線的頂點位置和紋理座標。然後我綁定相應的紋理並渲染線條。

不幸的是,這似乎很慢。有沒有更好的辦法?

+1

定義「非常緩慢」。這是呈現文本的標準方式。你是通過即時模式或其他方式繪製四邊形?我們需要查看您的代碼,以瞭解您是否實施了錯誤,或者是否與您的算法有關。 – 2012-07-06 16:07:35

回答

5

將渲染文本繪製到紋理,然後將該紋理繪製到屏幕上。在幀之間存儲紋理。您需要一些刪除不再可見的文字的管理,但這應該更快。

圖形庫通常將其抽象爲一個String類,一旦您將其繪製到屏幕上,它會記住它繪製的紋理並在內部字符串更改時使其無效。

9

IMO使用distance fields的最佳方式。將使用更少的空間,更快,支持幾個很好的文本效果,並且很容易實現(尤其是因爲你已經看起來已經準備好了字體 - >紋理部分)。

+3

此外,已經存在易於使用的工具[用於創建字體紋理和字距數據](http://www.angelcode.com/products/bmfont/),然後[生成距離字段](http:// bitsquid.blogspot.it/2010/04/distance-field-based-rendering-of.html)。 – Gigi 2012-07-07 16:24:01

1

FTGL庫可能會提供您需要的一切。

2

這是非常好的,快庫渲染使用FreeType的& OpenGL的動態文本:「不幸的是,這似乎是很慢的」 freetype-gl