日記一覧

コミケいってきた

とりあえず、HeartyBreakers完売。公式Web見つからないと話があったので、こちらから貼ってみることにします。

http://codingcafe.hp.infoseek.co.jp/index.html

 

ずっと座っていただけで、ノートPCもってムービー流していただけ。たったそれだけのために今日、がんばった。そして、周りの人々はなぜかドタキャンっぽく・・・。それみて、あぁこれはいけない、と実感。こうなってはダメですね。

Googleで検索したら、CodingCafe のページ(移転後)のが引っかかる。一応、作品からは検索可能なようだ。今丼さんもきっとこれで安心してくれるに違いない。

 


BDドライブかった

とうとう念願の記録型BDドライブを購入&取り付けました。
初焼きをしてみましたけど、10Gオーバーでもディスクの半分くらいまでしか色が変わらなかったので、まだまだ余裕を実感させてくれます。25Gのメディアでも余裕を感じるし、50Gならなおいっそう。今後もしばらくは安心できそうです。

しかし、焼きにはそこそこ時間がかかりました。2xだったのとベリファイ入れたのがダメだったのか。約1時間ほど取られてしまった。次は、25GBの6xで出来るモノならチャレンジしたいところです。

 


動かないコード

最近は動かないコードばかり書いてます。コンパイルを通してニヤリ、として終了です。
コンパイル時にすでに判定や計算が終わっている、とか、プリプロセッサ終了時に状態確定とか、そんなことばっかりやってました。

ふと、覗いてみるとどうやらBoostのPreprocessorが分野的に近い。そして、templateで色々とごちゃごちゃやったことは、メタプログラミング、という分野にいるっぽいことがわかりました。

こうやってできたコード、少なくとも人に読ませられるコードじゃないなぁと実感してます。数ヶ月後の自分でも怪しい・・・。

 


昨日の答え。

意外にも日を変えて再度悩んでみると思いつくものである。
とりあえず下記コードでやりたいことはできた。
しかし、T,Sなど1文字の型引数にしておくと、次みたときに相当わからないなぁ…

しかしこのコード、少なくとも今年一番イケてると自負してます

 


(no title)

メンバ変数で配列で…

メンバ変数のポインタを利用して、型情報取得できないか色々と思案中。メンバ変数のポインタ型をテンプレートの型として受け取るまではいけるものの、その型からさらに固定配列だった場合には長さを知りたい。

うーん、できるんだろうか…。

[code lang=”cpp”]
class A {
int a[100];
int b;
};
[/code]

このようなクラスがあって、 &A::a, &A::b という状態からその型と配列情報がテンプレートで展開できれば、目的のことが達成できるのに…。しばし悩んでみます。

 


OS再インストール中

いろいろとやることがあって大変な時期に、OSから再インストール中・・・。
もちろん、Vista x64版で。しかしながら色々とトラブルに見舞われ。

トラブルの点を列挙すると

  • MSDNのOSアクティベーションが上限超えた…。
  • DaemonToolsがインストールでこける

前者はもうしょうがないので、放置。そして、DaemonToolsの件はどうやらウィルスバスター2008のせい。
リアルタイムの検索を切ってみたら、それだけでインストールは成功しました。きっとほかの誰かも同じようにできなくなっているのじゃないかと思います。

MSDNのアクティベーションが上限超えたのはどうしようか。次の更新時期で更新せず、新規で契約しちゃおうかと考え中です。


XBOX360のゲームパッド

入力管理モジュール

Vista x64環境であっても XBOX360のゲームパッド非公式ドライバが存在していたので早速導入。 しかし、x64なので非公式ドライバは署名がない…。そのため起動時には、F8を押して、「ドライバ署名の強制を無効にする」を選択しなくてはならない。とりあえずそれで動作をチェックしてみたところ、やはりちゃんと動きました。

Vistaでの公式ドライバ名

XBOX 360 For Windows(Controller)

Vistaでの非公式ドライバ名

Microsoft Xbox360 Controller

だそうです。これの違いを見て自前で処理を振り分けとかしないとダメかも知れませんね。

 


スプライン実装してた

週末はずっと3次スプライン関数を実装してました。
とりあえず非周期版と周期版の2種類を用意。参考文献は、C言語によるアルゴリズム事典より。
実際に使う場面はまだ先になりそうだけど、出てきた値をグラフ化してみるといい感じの曲線を描いてくれてちょっと幸せ。

HDDレコーダ応答不能

番組表表示させようとしたらリモコンが聞かなくなった。
そして、電源オフだけは効いたのですが、PLEASE WAIT …. の状態のままずっと・・・。また何か毒電波出したのだろうか。

 


描画システムのMultiThread対応

スキニングメッシュもかろうじて表示できたので、諸々の部分をダブルバッファリングにして、描画とメインの実行ループの分離を行ってみました。文章にするとこれだけのことなのに苦戦しましたよ…。

  • DirectXのリソース作成・破棄はメインスレッドでやらなくてはいけない
  • アプリケーションの実行はサブスレッドになる。
  • DirectXは、WndProcが実行されるスレッドで初期化されなくてはならない。また基本的にこのスレッドで実行されるべきである。
  • 当然、描画要求を出してタイミングがきたら描画。このためバッファリング必要

色々と書き換えてようやく、ポイントライトなシェーダーを実行させるところまでは出来ました。しかしスキキングメッシュ関連で、マルチスレッド化に伴いフォルスシェアリングが起こりそうだったので、またスキニングメッシュは表示できない状態へ戻りました…


インテル スレッディングビルディングブロック

最近の自分のぐっと来るポイントに、templateとスレッドがあったわけですが、これらをミックスした書籍があるとのことで探し回ってました。

2月末に出ていたらしく、その本のタイトルは、”インテル スレッディングビルディングブロック” TBBと略されるらしいです。オープンソース版と商用版が提供されてます。

ざっと読んでみたところ、ループをスレッドを使うように展開したparalell_for関係の使い方と、作業をパイプライン化、もしくは単純にタスク化しての使い方の説明で終わったと思います。
他にも、単純にSTLコンテナをスレッドセーフにするためにロックさせるものよりも効率の良いコンテナ群の説明とか。

感想としては、もうちょっと内部的な話を見たかったのですが。それはOSSで提供されているコードを見ろってことでしょうか。しかし、2コアのシステムでこれを有意義に使える状況って限られるんじゃないですかねぇ…

少なくともゲームにはこのままじゃ使えなさそうです。