記事一覧
| 仮想関数テーブルの扱い |
|
C++において、仮想関数のない基底クラス(Base)を継承した派生クラス(Sub)で仮想関数を定義した場合、
基底クラスで定義した変数のアドレスが変わってしまうのでは?という疑問があり、実験してみた。(仮想テーブルはメモリ上先頭に配置されるため)
class Base
{
int baseData;
};
class Sub : public Base
{
int subData;
};
Sub *sub = new Sub; //サブクラス実態作成
Base *base = sub //親クラスポインタにキャスト
sub->baseData = 123;
int data = base->baseData;
dataには正しく123が格納された。
baseはsubの4byte先を参照していた。
仮想関数が定義されているクラスとされていないクラスをキャストする場合、アドレスが変更されるらしい。
確かにこれなら問題ない。当たり前といえば当たり前。
|
2009/10/30 08:29
:: C++
:: コメント(0)
:: トラックバック(0)
| ついにブログ完成 |
|
ようやっと正式なブログが完成しました。
もうHTML手書きで頑張らなくていいんですね^^
HP全体の文字コードを、以前は技術的な問題でEUC-JPにしていましたが、これを機にUTF-8に統一しました。
が、その影響で掲示板が正しく機能しなくなり、調べてみた所、キャラクターセット「latin1」の行にEUC-JPで無理やり突っ込んでいたらしく、変換が困難な状況。
今まで無事に動いていたのが不思議なくらい^^;
復旧にはいましばらく時間がかかりそうなので、ご利用頂いている方にはご迷惑をおかけします。緊急の用事はこの記事のコメント等をご利用ください。
|
2009/10/26 16:03
:: ホームページ
:: コメント(0)
:: トラックバック(0)
| Bullet |
|
最近ではGPUに対応するとかしないとか噂のBulletを触ってみました。今までずっとPhysXだったのに何故今更?
最近のPhysXは、どうやら低スペックマシンでは動かないらしい。厳密には、実行時にCUDA関係のdllが無いとエラーとなり、CUDAが動かない環境ではこれがインストールされないため動かない。
ソースつきのサンプルはもちろん、ソフト動作のみの指定をしても動かない。が、コンパネのデモは動くので、もしかしたらやりようはあるのかも?
一応動かす側の力技では何とかなるが、これをユーザーにやれっていうのもなぁ・・・と、PhysXに将来の不安を感じたので多少なりBulletに触れておくことにしました。
取りあえずサンプルを動かしてみた感想は、「遅ぇ!」。いや、普通のゲームなら実用レベルなんでしょうが、PhysXが軽すぎたのでそのギャップがでかいですね^^;
現状、まだまだ作品が出来るレベルでは無いため、取りあえずPhysXで作って、必要なら後で差し替え出来るようにしておけば十分な気がしてきました。その頃にはDirectPhysicsなる物が出来るかも知れませんし…
|
2009/09/16 13:21
:: コメント(0)
:: トラックバック(14)
| 忘れてた |
|
しばらくホームページの存在を忘れてました。最近は音楽系のソフトを作ったりいじったり仕事が忙しかったりで、前回予定してたアニメーション実装が完了して止まっています。
リグは面倒なのですっ飛ばしてグラフィック周りに手をつけようかと思ってたんですが、全くやってないですね^^;
そろそろDirectX11も出ちゃうし、どうすっかな…
|
2009/06/09 13:24
:: コメント(0)
:: トラックバック(0)
| アニメーション実装中 |
|
だいぶレーシングとしてまともに遊べるレベルになってきました。別にこれで何かをつくろうってわけじゃないんですけどね^^;
アニメーションの実装はそろそろ出来そうですがリグ周りの実装がどうなることやら。IKなんてもうチンプンカンプンでPhysXのジョイントに頼ろうかと思っているくらいですorz
|
2009/02/18 13:26
:: 制作活動全般
:: コメント(0)
:: トラックバック(0)