2005年07月09日C++にはまってしまった
え、DELPHIERのくせにC++ですか?と言わないで下さい。
DELPHIを使い始めて早8年、ついにC++にはまってしまいました。 主な理由は二つあります。 一つは、OpenH323というオープンソースソフトウェアのソースコードに感動したこと。 一つは、VCのエディタが非常にしっくりくること。 これの比率は8:2くらいです。なので、一つめの理由について書きます。 具体的にいうと、pwlibライブラリに含まれるPSemaphoreとPWaitAndSignalというクラスが、非常にツボにはまりました。「スコープを抜けたらオブジェクトが解放される」ということを利用して、スレッドプログラミングでおなじみの同期オブジェクトのシグナル状態の変更をエレガントにやってのけています。 コードで書くと、こんな感じです。 PSemaphore semaphore; : { PWaitAndSignal w( semaphore ); // ここに保護したいコードを書く。 } かっこいい。 これの何がかっこいいかというと、コメント部のコードのロック、アンロックを、クラス変数の宣言コードが一行だけで済む。ということです。普通、ロック、アンロックで保護したいコードをはさむ必要があり、途中でreturnするときなどを考えると、コードがぐちゃついてしまうのです。 同時に思ったのが、今僕が知りうる知識では、同等のことをDELPHIではやれない、ということです。 DELPHIではクラス変数はコンストラクタで初期化する必要があり、破棄する場合にはデストラクタを呼び出す必要があるからです。 言語の選択によって、コーディングセンスは変わってしまう。 そう気づかせるようなコードでした。 コードを読むことによる感動は、Extreme Shootersのコードを読んで以来の事です。ちなみにExtreme Shootersは、Quadruple Dの作者であるSANDMANさんの作品です。 「スコープを抜けたらオブジェクトが解放される」を利用したテクニックは、処理時間計測などにも活用(どっちかというと適用かな)できます(コードはここに書きませんが)。 DELPHIで、同等のことはできないのでしょうか?(結局DELPHI) 2005年05月09日fladdict.net blog: 世界最強のajaxアプリ TRIGLAV
Diablo風ajaxアプリが紹介されていました。
すごくなめらか。実際に動かして見て下さい。 fladdict.net blog: 世界最強のajaxアプリ TRIGLAV ゴクリ・・・。 ってなりますよね? 余談ですが、個人的にJavaScriptにはあまりいい思い出がありません。 過去にFlashとJavaScriptを連携させようとしたことがありました。 この場合、SetVariable、fscommandを駆使することになりますが、 IE以外でうまく動かせなかった、ということが起因しています。 それはさておき。 ちょっとajaxについて整理しておきます。 [続きを読む..] 2004年06月15日Flashで3D、少なくとも無限平面
Flashでパースつき無限平面、パースなしテクスチャマッピングが出来る、
ということは、実物を見て知っていたのですが、サンプルなどを見て 確実に実装できるという確信を持ったので、取り組んでいきます。 参考になるページを列挙しておきます。 ■国内 vas animation Flashで興味深い実験をいろいろとなされています。 実際に動くものを公開されており、参考になるリンクも多いです。 ■海外 実際に動くもの マリオカート的なサンプル。 http://www.nlc.net.au/~oceana/games/rc.htm http://www.nlc.net.au/~oceana/games/rc.zip ソースつきの無限平面サンプル。 3d texture mapper and OOP engine テクスチャマッピングのサンプル。ただし、テクスチャの形が正三角形で作られていたため、 四角形のテクスチャを張るためなら即戦力にはならない。 3D rotating cube (large version with pictures as texture) こちらは四角形テクスチャマッピングが簡単。 画像を変えるだけですぐに使える。 Flash kit 上記のような参考になるものが数多く集まっている。 [続きを読む..] 2004年02月28日DelphiXをDelphi6で使う方法
turbo - unofficial DelphiX homepage
DelphiXをDelphi6で使う方法です。 ニーズが多少なりともあるようなので、メモしときます。 海外に解説ページがあるので、まずはそこにリンクを。 [続きを読む..] 2003年12月11日質量と速度を考慮しつつめり込みを少し考えた衝突
2002年07月23日Smart Filtering要約テクスチャのフィルタリングは現代の3Dグラフィックスにおける必須機能である。 3Dのアクセラレーション機能が登場するまで、リアルタイムテクスチャマッピングには、 四角っぽさ丸出しの、点補間フィルタだけが使われていた。 今では、我々はいろいろなフィルタを使うことができる(ミップマップベースの縮小、 バイリニアフィルタによる拡大など)。
![]() それぞれの場合で、それに見合うフィルタを用いる。 その1:四つのすべてのテクセルが同じ領域にあるので、 このテクセルの補間には、バイリニアフィルタを使う。 その2:上の二つのテクセルと下の二つのテクセルで分かれている。 水平境界線の上の領域の色は上の2つのテクセルによって線形補間される。 下の領域も同様に処理する。その他の場合のフィルタも同じような方法で定義される。 テクセル補間のためのフィルタ番号は、テクスチャと一緒に格納されている(各テクセルに4bitを付加することによって実現している)。 レンダリング段階では、このフィルタ番号を読み込むことによって、テクセル補間に正確なフィルタを使うことができる。 だから、このテクニックを使うと、拡大率にかかわらず、均一色領域の間をはっきりとした境界線として表現できる。 さらに、均一色領域内部にバイリニアフィルタを使うことによって、待望の滑らかさを得る。
個人的な感想(訳者による)実行画面もとてもきれいで久々に驚いた。 これをハードウェアがサポートすれば、正に「革命」となりうるだろう。 320x240の解像度で実行される2Dゲームでも、解像度を上げて、この手法を取り入れれば 画質が向上すると思われる。 しかし、α値はどこに格納するのか、などの点が気になった。 |
|