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の方がやっぱり強力

2012年5月31日木曜日

ある構造体typeのメンバ変数memberのサイズを取得するマクロ


マクロ

#define MEMBER_SIZE_OF(type, member) sizeof(((type*)0)->member)

使用例

#define MEMBER_SIZE_OF(type, member) sizeof(((type*)0)->member

struct TestType
{
    int val;
};
Uint32 valSize = MEMBER_SIZE_OF(TestType,val); // valのサイズ取得



sizeof内の式は実際には評価されないので、NULL参照とかにはなりません。