openFrameworks導入

はじめに

C++でちょっとした図形を書きながら処理を作りたい案件があり、openFrameworksを導入してみた。

あわよくばiOSとかHTML5とかでも動いたらいいなぁとか思って、いろいろ調べてSDLやcocos2d-xも候補に挙がったが、いや、一歩目はもっとさっくりとにかく素のC++で、と思い直し、openFrameworksにたどり着きました。メディアアーティスト感あるし。

環境構築

https://qiita.com/Gaccho/items/f193d1c350b45b93f663
これに従えば、ほぼその通り導入できた。

異なった点:
新規プロジェクトを作る際に、プロジェクトのテンプレート選択で、「インストール済み>Visual C++>テスト」の下にopenFrameworksが入ってた。

ビルド時のワーニング

コンパイル時にコードページのワーニングC4819が大量に出る。
なんか昔からこういうのは尽きないよね…。
回避方法は… ↓警告無視オプションを設定するって、なんか他にないの??
「プロジェクトのプロパティ>構成プロパティ>C/C++>詳細設定>指定の警告を無効にする」で4819と指定する。

ちょっと悪あがきしてみる。
ofVec2f.hとofVec3f.hは、実際にどこかにasciiじゃない文字コードが入ってるみたいで、VSCodeで開くとWindows1252と認識されたので、BOM付UTF-8にしたらワーニング取れた。
freetype.hはVSCodeでもUTF-8だし、ワーニング出ている行も空行(というか「*」しかない行)だったりしてよくわからないけど、同じくBOM付UTF-8にしたらワーニング取れた・・。うーむスペースとか改行とか目視不能なところになにか紛れているのだろうか。バイナリエディタで見るとかまではしません…。

あんまりライブラリのソースを変更するのは嫌だけど今回はこれでいいや。

直近で必要な処理を調査

とりあえずラインとか矩形とかの描画と、テキスト描画、キーボード・マウス入力当たりがあればよい。

簡単な図形描画

f:id:nakadaieng:20190821153507p:plain
太線はイメージが違う・・まあそうなる理由はわかる。
なんで円が多角形なんだろうか。
直線がぼやけて見えるのはよくある0.5ピクセル問題?

文字

ofDrawBitmapStringでASCII文字は出せる。いったんこれで充分。
f:id:nakadaieng:20190821153658p:plain

ofDrawBitmapString("scale:" + std::to_string(r), ofsx, ofsy);

「std::to_string」というものを知る・・。
C++で文字列を扱う最近のトレンドは何なんだろうか。
(最近のC++の再学習に関してはまた別途やる必要がある)

printfはコンソールに出る。
TTFのフォントを使うモジュールもあるらしいが今は不要。

入力

自動生成されたofAppに、すでに、
key~、Mouse~という、入力イベントを受け取る関数ができている。

void ofApp::keyPressed(int key)
{
    printf("press %d\n", key);
}

 
keyはASCIIコードが入ってくるとのこと。
ちなみに、Enterは13(いわゆるCR)、Shiftは1と3680が来た。まあいいやその辺は使うまい。