2004-01-01から1年間の記事一覧

.flファイルのVC++7.1からのコンパイル指定

サンプルだとファイル名を直打ちしているが、マクロを使って綺麗に書きたい。 fluid -c $(InputFileName) あと、さっきの#include "stdafx.h" を追加するやつをかませるには、さっきのスクリプトをmodifyFluid.py として、以下のように書き換える。 fluid -c…

ロジック部分を.flファイルから切り離す

fluid を使っても C++ コードがかけるので、しばらくそれを使っていたが、レイアウト以外はテキストエディタを使いたい。fluidが便利なのは、せいぜいレイアウトどまりだ。そんなときは、各種イベント関数を「function (丸いアイコンのやつ)として作った後、…

VC用くずスクリプト

コマンドラインから第一引数で受け取ったファイルの先頭に #include "stdafx.h" を挿入。 import sys f = open( sys.argv[ 1 ], 'r' ) t = f.read() f.close() f = open( sys.argv[ 1 ], 'w' ) f.write( '#include "stdafx.h"\n' ) f.write( t ) f.close() …

利点・欠点

読みやすさより、書きやすさ優先ではあるが、Perlほど汚くはないと思う。利点 すごく拡張しやすい すごく書きやすい 速い 小さい 出来上がるコードサイズが小さい ライブラリのソースコード量が少ない GL との親和性が異常に高い GLUT エミュレーションまで…

スクロールビュー?

仮想サイズを持っていて、実際のウインドウサイズよりも仮想サイズの方が大きい場合はスクロールバーを出すというよくあるWidgetがない。MFC でいうところのhttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html…

resizable()の規則に戸惑う...

画像を使って説明すれば楽なのですが、はてなはじゃんじゃん画像を置けないので、文字で許してください。一般的な GUI ライブラリには、たいてい ALIGN_LEFT, ALIGN_RIGHT ... など、ウインドウが拡祝された際のアルゴリズムを指定できるようになっている。…

ゲーム用チュートリアルサイト

http://www.gametutorials.com/Tutorials/OpenGL/OpenGL_Pg1.htmよい。

まだまだMax

あ、3dsって、モーションも格納できるんだ。http://sparks.discreet.com/から、3ds用のツールキットが落とせるので、解析中。

数学ライブラリ

glslも、NVSDKも、ATI SDKも、みんな vec2, vec3... mat2, mat3... なんですね。関数も似てるし。個人的にはfloat4とかの方(HLSL系)が好きなんですが...、とりあえず、長いものには巻かれる方向で、NVSDK の数学ライブラリでも使おうかしら。クォータニオン…

max学習しマックス

チュートリアルを一つ一つこなす日々。初心者気分って、楽しいですね。3,4時間後... うわ〜、モーションどうやって持ってこよう!エクスポーターなんて書いてらんねぇ。

cppllはレベル高いね

変な質問しても、すぐ答えてくれます。最高です。ただ、VC7.1でもdynamic_castは複雑なキャストの場合文字列比較をしまくっているとは...。http://www.tietew.jp/cppll/go?ml=cppll&seq=11413

C++クラスのメモリレイアウト規則

C++

標準はないみたいです。忘れないように、メモっておきます。はじまり : http://compilers.iecc.com/comparch/article/94-08-087 MS の回答 : http://compilers.iecc.com/comparch/article/94-08-119 一般的な回答 : http://compilers.iecc.com/comparch/arti…

8と16元数

syoyoさんと8,16元数の話をしました。後で読もうっとリンク集。なんだかんだで、octonionと検索するとGAが出てきますね。http://www.clifford.org/wpezzag/talk/98math/ http://www.boost.org/libs/math/octonion/octonion.html http://www.ceac.aston.ac.uk…

ああ、やっぱりお前か...

はじめに言っておきます。仕事で使いましたが、ハイパーな量のデータ(数万ファイル)に対して、自前で作ったツールで処理をする場合(C/C++コンパイラーの呼び出しなどのSConsの正常な利用法ではなく、自前のツールをSConsにプラグインを書く感じで依存関係を…

なんだかすごい回り道

う〜ん、BoostBookを勉強するハメに...。そして、いつの間にか Boost.Build V2 を調べるハメに。(約1時間後)く...やっぱ全部を Boost.Build V2 で書ききるには、そして、Boost 狂信者として全てを Boost で固めるには、俺の力では足りなかったか...。結局、d…

アルファ版ぐらいの木ができた

まとめてみると... イテレーターに関して当初予定していた機能はほぼ実装できた 全てのイテレーターで親子兄弟に自由に移動可能 今のところ全てのイテレーターがポインタしかメンバがない 直接の子のみを走査する sibling_iterator と pre-order, post-order…

死んだ牛肉はBSE?

仕事でDirect3D触っていたら、解放済みのインターフェースに0xDEADBEEFって入っていた。俺は気づかなかったんだけど、アメリカ人とペアプロしていて、そいつが気づいて笑ってた。確かに、16進数で書けるね。みんなもゴミ値に使え 0xDEADBEEF!32bit限定だ…

木がいい感じ

行けるかも!?

木構造のSTLライクなデザインの難しさ

昔からのテーマなのですが、木構造 ( std::map のように木を中に持っていて外からは配列的に扱えるものではなく、子や兄弟など階層をなすもの ) の STL ライクなデザインがなかなか難しい。http://www.damtp.cam.ac.uk/user/kp229/tree/今のところ上の tree.…

gl継続中

なんか、ライティングモデルが、よくわからない。glColor(...)で指定した色を無視するにはどうするのだろう...。とりあえず、時間なので、ご飯食べて出かけます。

試作:GLSL互換ベクトルクラス

シェーダーのベクトルはswizzle機能が最高です。これをC++で実現するのは長年の夢でした。さらに、SIMDを実装に用いれれば...最高です! 一応、こんなことができるところまで行きました。 using namespace glsl_math; vec4 a( 1, 2, 3, 4 ), b( 5, 6, 7, 8 )…

STLとの共存のための妥協案

D3DXMATRIXA16でも、同様の手法で SIMD を使っているようです。 // まず、アライン指定無しの構造体を宣言 struct none_aligned_vec4 { union { float array[ 4 ]; struct { float x, y, z, w; }; struct { float r, g, b, a; }; }; none_aligned_vec4( floa…

STLと仲が悪くなるのはなぜ?

__m128 と vector なら... __m128 a = { 0.1f, 0.2f, 0.3f, 0.4f }; std::vector v; v.push_back( a ); コンパイル通ります。 でも、継承したベクトルクラスなんかを作ると... class vec4 : public __m128 { ... }; std::vector v; v.push_back( vec4( 0.1f,…

足し算

#include "stdafx.h" #include #include int _tmain(int argc, _TCHAR* argv[]) { // _mm_add_ps __m128 a = { 0.1f, 0.2f, 0.3f, 0.4f }, b = { 0.5f, 0.6f, 0.7f, 0.8f }; __m128 c = _mm_add_ps( a, b ); for ( int i = 0; i

へぇ〜

OpenSG と Open Scene Graph は別物です。現在調査中。

プロジェクション行列を作る際のハメ

プロジェクション行列は一定なので、起動時に一回作るだけで終わろうと思ったのですが、うまく行きませんでした。原因は、 std::auto_ptr window( new Fl_Gl_Window( 640, 480 ) ); window->show(argc,argv); glMatrixMode( GL_PROJECTION ); glLoadIdentity…

適当に60フレーム固定

Windows専用。 DWORD lastTime = timeGetTime(); while ( 1 ) { ... // 何かの処理 window->redraw(); Fl::check(); DWORD curTime = timeGetTime(); const DWORD frameTime = 1000 / 60; // 1フレームの長さ const DWORD strictWaitTime = 2; // 頻繁に Sl…

まだまだfltk

fltk+OpenGLではなく、SDL+OpenGLを薦められる。ちょっと見てみたが、なんだかめんどくさくなってきたので、しばらくはSDLに手を出すのは、やめておきます。 でも、SDL結構よさげです。

キーのポーリング

左キーを検出する場合は、こんな感じ。 if ( Fl::get_key( FL_Left ) ) { printf( "l" ); }

GLウインドウを作る

こんな感じ。 Fl_Gl_Window *window = new Fl_Gl_Window( 640, 480 );