2012年11月25日日曜日

マルチコアプログラミングをしてると出てくる用語

ちょっと、

out-of-order対策、メモリバリア、sequential consistency関連はサンプルコードを書いて体で覚えないとダメだ。

【メモ】
・releaseバリア:先行の命令が、バリアを越えて後にリオーダーされるのを禁止。書き込み時に使われて、書き込んだ時点でその前の命令が終わっていることを保証する。
・acquireバリア:後続の命令が、バリアを越えて前にリオーダーされるのを禁止。読み込み時に使われて、読み込んだ時点でその後の命令が行われていないことを保証する。
・Sequentially-consistent:異なるメモリ位置に対する書き込みが、全てのプロセッサから同じ順序で観測されることを保証する。

2012年7月16日月曜日

Android NDKでのglVertexAttributePointerの挙動

頂点カラーのattribute変数に値を渡す時

以下のやり方(VBO利用)はWindowsのOpenGLでは問題なく動く。

glVertexAttributePointer( 1 , 4 , GL_UNSIGNED_BYTE , GL_FALSE , sizeof(vertex) , 0 );

なんか、Android NDKではうまく動かない。。。
normalizedの引数をGL_TRUEにしても変わらなかった。。。

floatはGLESではfloatで渡さないとダメ?

2012年6月24日日曜日

GL_CLAMP

Android版には定義がない!?

変わりに、GL_CLAMP_TO_EDGEはあった。。。

VC++ => gcc 備忘録(1)


デフォルトの警告レベルで、64bit整数値定数を扱う場合

修正前:0xFFFFFFFF00000000

VSだと警告なし
gccだと警告あり


修正前:0xFFFFFFFF00000000LL


最後に"LL"つけましょう


androidのAPIレベルが知りたくなったら

Android API Levels | Android Developers へ

2012年6月23日土曜日

プリプロセッサ展開後の出力


Visual C++

 1.  [プロパティ]-[構成プロパティ]-[C/C++]-[コマンドライン]画面に移動
 2. [追加オプション(D)]欄に「/C /P」を記入
   → /Cはコメント除去 /Pがプリプロセッサ出力の意味
 3. ビルド
 
 プリプロセッサ出力結果が[プロジェクト名].iファイルとして出力される


gcc
 
 gcc -E test.cpp > result.txt 

 結果が、result.txtに出力される

インライン展開メモ

・ デストラクタを持ったクラス(構造体)を値渡しで返す関数だとインライン展開されないことがある 
→ 無意味に空のデストラクタを定義するのはやめたほうがいいかも

・ inline よりも __forceinlineの方がやっぱり強力