2012-12-18 26 views
0

我位於C相當新++,我試圖讓我自己的字體繪圖功能,因此,我有一個包含大量圖像對象的這樣一個字體類:字體在OpenGL

Image A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z; 
    Image a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z; 
    Image n0, n1, n2, n3, n4, n5, n6, n7, n8, n9; 

我將從單個大圖像文件中填充角色圖像,並根據需要將它們繪製到四邊形上。現在,顯而易見的解決方案是將所有這些都保存在地圖中。但是,我擔心性能問題必須遍歷整個地圖,以便爲每個單幀顯示的每個字符搜索正確的字母。

這裏有沒有什麼捷徑,或者說是所有的東西都有嗎?

請注意,我知道可能有大量的免費和開放源代碼的opengl文本繪圖庫,但我的做法與其他任何東西一樣多。我感興趣的是對當前問題的有效解決方案,不一定是更好但不同的解決方案。除非我的方法在某種程度上是根本錯誤的,那就是。

回答

1

任何時候你發現你自己寫了62個相同的變量定義應該是一個強烈的暗示,你正在做一些根本性的錯誤。

字符代碼使得數組索引非常好。或者,至少當ASCII是唯一的字符集並且最大值是255時,他們就做到了。在Unicode的這些日子裏,您需要對分配的範圍更加小心,但是從您的示例代碼中您不感興趣除了字母數字以外的任何東西。

由於你是在做這個學習練習,所以在轉換爲數組之後,考慮將所有字符形狀放在一個單獨的圖像中(有時稱爲罷工)並只存儲每個字符的像素座標,而不是整個圖像。

+0

是的,謝謝,我已經算了很多。我忘記了所有有關ASCII的東西,但回顧它通過本教程:http://www.gamedev.net/topic/330742-quick-tutorial-variable-width-bitmap-fonts/我已經實現了一些東西與此類似,雖然我仍然在我的角色結構中存儲了一個小圖像(從一個較大的圖像中獲取)的副本;在將它傳遞給我的opengl繪圖函數時,它對我來說似乎更具性能效率,唯一的缺點是我可以看到它可能需要更多的內存,而不是將它們全部保存在一張圖片和更長的加載內。 – user1870725

+0

只要它是ASCII,我甚至不需要搜索字符,我可以直接從字符串中取數據並獲取數據。 Bitmap字體生成器應用程序似乎很容易使用任何我想要的字體。 – user1870725