Openframeworks顯示和排版文字---ofxFontStash2
這篇文章是寫給學編程的設計師和藝術家看的,純搞技術的,有意見請保留,不然被我懟了別砸鍵盤。
所謂開發介面,就是一套函數及其規範還有配套文檔。照著文檔用這些函數,就可以實現需要的功能。
三維圖形的編寫主要靠兩大開發介面,DirectX和OpenGL。
前者是微軟的,windows專用,已經出到了DX 12。後者是一個叫khronos的非盈利組織制定的,組織成員公用,跨操作系統平台。前段時間這個組織推出了一個效率更高但是更難用的開發介面:Vulkan。
背景交代完了,言歸正傳。
OpenGL介面是渲染圖形的,而文字是比較特殊的圖形,所以就麻煩了點,然後就有厲害的程序員寫了函數庫提供在OpenGL程序里渲染文字的簡易動態高效的函數。這其中之一就是:Font Stash,作者叫Mikko Mononen,後來有個人叫akrinke,做了一些改進:
Major changes to the original version 主要改進
- Bitmap font support 點陣圖字體支持
- Truetype font loading from memory 內存載入TrueType字體
- Added ability to load an arbitrary number of fonts (not just four) 可以載入多種字體(而不僅僅是四種)
- Use multiple OpenGL textures for glyph caching (not just one) 用多張OpenGL貼圖緩存字體
然後,一個叫armadillu的程序員,精簡打包了Font Stash函數庫和一些配套的功能,給Openframeworks用,叫ofxFontStash,現在出了第二版,叫ofxFontStash2
github地址:armadillu/ofxFontStash2
如果github訪問速度比較慢,或者默認的example你缺少depedences,我準備了微雲網盤完整版的下載地址:鏈接:微雲分享 (密碼:xBFXtw)
用法簡易說明
頭文件:#include "ofxFontStash2.h"
功能對象:ofxFontStash2,ofxFontStashStyle
示例代碼片段:
fonts.setup(512); fonts.addFont("MiaoMiao","MFMiaoMiao_Noncommercial-Regular.ttf"); style.fontID = "MiaoMiao"; style.fontSize = 33; style.color = ofColor::yellow; fonts.addStyle("style1", style); fonts.pixelDensity = 1.0; string text = "Quick brown fox jumps over the lazy dog"; float colW = 200+ofMap(ofGetMouseX(), 0, ofGetWidth(), 0, 200); fonts.drawColumn(text, style, ofGetWidth()/2,ofGetHeight()/2, colW, false);
歡迎讚賞,歡迎付費提問
推薦閱讀: