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);

歡迎讚賞,歡迎付費提問

推薦閱讀:

TAG:C | 新媒體藝術 | 數字媒體藝術 |