実装メモ
2016/10/27 GLSLの行列コンストラクタ引数
2016/10/03 各ライブラリテクスチャフォーマット一覧
2013/11/27 Cygwinパッケージ作成メモ
久々にCygwinを新しくする。
- Baseを全て,それに加えてgcc-g++,patch,zip,unzip,wget,openssh,inetutils(ftp用)を追加。
- makeはDOS形式対応版の3.82をネットから落としてきてインストール後上書き。 http://sites.rwalker.com/cygwin/
- fstabファイルも後から上書き。
2013/11/06 XCode5.0.1でビルドする方法
下記を参考に10.6のSDKを入れる必要がある。
http://qiita.com/shuhei@github/items/3980a9082a2631565065
2012/12/04 行指向と列指向の行列のかけ算の順番
列指向(OpenGLなど)
gl_Position = projMtx * viewMtx * vtxPos;
行指向(DirectXなど)
gl_Position = vtxPos * viewMTx * projMtx;
2012/11/18 G3D::ResMdlの要素を整理する
モデル | ResMdl | mdl | 1visual_sceneノードが1xmdlファイルで1ResModel。 |
メッシュ | ResMdlMesh | mes | Visibility制御単位。daeでいうmeshに相当。 |
シェイプ | ResMdlShape | shp | 描画単位ジオメトリ。1マテリアル1シェイプ。daeでいうtrianglesに相当。 daeと異なりシェイプ単位で頂点の位置,法線などの配列を持たせる。 |
となると状態保持はNodeState,MeshState(VisibilityState),MaterialStateとなりそう。
コンバータのイメージ
DAEConverter.exe input_xml_path -xmdl "Hoge.xmdl" # 0番目のvisual_sceneをHoge.xmdlに出力
DAEConverter.exe input_xml_path -xmdl "Foo;Hoge.xmdl" #Fooという名前のvisual_sceneをHoge.xmdlに出力
2011/04/03 MSVC2010 で同名cppファイルによるobjファイル衝突回避方法
オブジェクトファイルの出力先を次のように変更する
$(IntDir)\%(Identity).obj
2011/04/02 iOSのXCodeプロジェクトの注意
リンカフラグに -ObjC がないとアプリケーションデリゲートが見つからないと言われて強制終了するので注意。
2011/03/21 テクスチャのサイズ制限
2のべき乗制限は有りにする。
無しにしたいけど未だにこの制限があるハードはたくさんありますし。
2011/03/20 UVの座標系
DirectXは画像の左上が(0,0)。
OpenGLは画像の左下が(0,0)。
この違いを吸収するには仕様を片っ方に合わせておけばいいのかな?
OpenGL基準(画像の左下0,0)にしたとするとDirectXでは上下反転した画像を出力すればそのまま使えるはず。
エンジンの仕様でどっちを採用するか決めてしまえばいいだけのことね。
2011/03/15 拡張子とクラス名
.xtex .bxtex CrossFramework.G3D.ResTex
2011/03/08 G3Dの初期設定
clearColor | RGBA(0.0,0.0,0.0,0.0) |
mtxProj | ortho l-r(-1,1) b-t(-1,1) n-f(0,1) |
2011/03/06 iOSのエントリーポイント
こんな感じかな。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
-
|
|
|
|
|
|
|
!
-
|
|
|
|
|
|
|
|
|
|
|
|
!
-
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
|
|
|
|
|
|
|
|
|
!
| #spanend
#spanadd
int main()
#spanend
#spanadd
{
#spanend
return mainC( ... );
#spanadd
}
#spanend
#spanadd
#spanend
#spanadd
int mainC( Arg aArg )
#spanend
#spanadd
{
#spanend
#spanadd
}
#spanend
#spanadd
#spanend
#spanadd
int xmainThreadEntryPoint( Arg* aArgPtr )
#spanend
#spanadd
{
#spanend
waitSignal();
int result = 0;
{
#spanadd
#spanend
#spanadd
Application app( *aArgPtr );
#spanend
#spanadd
#spanend
#spanadd
#spanend
#spanadd
result = xmain( app );
#spanend
}
signalToUIMain();
return result;
#spanadd
}
#spanend
#spanadd
#spanend
#spanadd
|
スレッドでUIViewとかUIWindowを作っても表示されないところで数時間はまった。
スレッドがexitせずにsleepする状態だと怒るらしい。
スレッドを寝かす前に CATransaction::flush() で明示的にCoreAnimationを更新してやるといけた。
正しい方法かどうかは不明…。
2011/03/05 iOS対応どうやろう
元々WinとMacのクロスプラットフォームで考えていましたが
流行のiOSも対応させてみるのはおもしろそうと思いちょっと考えてみました。
iOS対応となると一番ネックなのがイベントドリブン式になるということ。
didFinishLaunchingWithOptions
applicationWillTerminate
applicationWillResignActive
applicationDidBecomeActive
初期化・後始末・アクティブ化・非アクティブ化のイベント。
後は毎秒60回のイベントが流れてくると考えれば良さそうです。
…という要件からメインループを書いてみる。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
-
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
!
|
!
| #spanend
#spanadd
int xmain()
#spanend
#spanadd
{
#spanend
Application app;
#spanadd
#spanend
bool doExit = false;
while ( !doExit )
{
Event event = app.eventReceive();
#spanadd
#spanend
switch( event )
{
case EventKind_Quit:
doExit = true;
break;
#spanadd
#spanend
case EventKind_BecomeActive:
break;
#spanadd
#spanend
case EventKind_ResignActive:
break;
#spanadd
#spanend
case EventKind_UpdateFrame:
update();
draw();
break;
#spanadd
#spanend
default:
break;
}
}
#spanadd
}
#spanend
#spanadd
#spanend
#spanadd
|
なんとかいけるかな?