2008-01-01から1ヶ月間の記事一覧

OpenGL点描画の罠。

glBegin( GL_POINT ); では、いくらやっても正しい点描画は得られない。正しくは、glBegin( GL_POINTS ); だ!。

初めてのDirectXシーン構築

本日の、Form1におけるPaintコールバックはこんな感じだ。Teapotが、オレンジ色の背景の中で、静かにしっかりと回転する。背景のオレンジ色は、64FPSでもって、赤と黄色で交互に背景をクリアしているので、しかもティアリングがないため、オレンジ色に見える…

PC構成要素の確認

ファイル名を指定して実行から、dxdiag を立ち上げると、PCの構成部品の詳細(CPU、グラフィックカード、サウンドカード…etc)を一度に知ることができます。しかし、EM64T対応(WindowsXP64とかが動く)かどうかとか知りたかったら、CPU-Zというフリーソフト…

ティアリングについて

リアルタイム描画環境を実現するゲームループができたところで、次に気になるのがティアリングだ。例えば30FPSで、トップのFormの中に、OpenGLもしくはDirect3Dを関連付け、SwapBuffers()もしくはdevice->Present()を使って、バックバッファをFLIPすると、ひ…

 ゲームループについて

Windowsにおける、リアルタイムアクションゲームのメインループのあるべき姿について方々で調べたところ、システムのタイマーを使うのではなく、ループを自分で作ってしまうアプローチが妥当というか、ポピュラーなようだ。これはGDI、OpenGL、Direct3Dのい…

関数オブジェクトを受け取るアルゴリズム

C++

上述の文脈の流れで、STLのforeachなど、動作の述語引数として、関数オブジェクト、関数ポインタともに受け取るような関数は、 template< class T > void DoSomething( T func ) { int a, b; char* buff; .. func();// Tは引数なしで呼び出せる「何か」でさ…

ポリシークラスとホストクラス〜ポリシーベースドクラスデザイン

C++

ある決まったインタフェースのセットをクラスが持つように要求するとき、そのインターフェースのセットそのものをまとめて、「ポリシー」と呼ぶ。そのポリシーを持っているクラスそのものを「ポリシーの実装」や 「ポリシークラス」と呼んだりもする。 たと…

内視鏡手術と尿道管、その後…

膀胱鏡内視鏡手術というものをやった。 半身麻酔は麻酔のための麻酔をするので本当に最初の細い針が背中でちくっとするだけだった。あとは太い針が入った(らしき)あとは、かすかに背骨の真ん中の方で針が動くときに、チロッ!という痛みがあるかないかくら…

ファイルコピーとプログレスバー

Windowsで、ファイルをコピーする処理を実装するとき、小さなファイルはいいのだが、大きなファイルともなると、数十秒間はコピー処理から帰ってこないことがよくある。そこで思いつくのがプログレスバーなのだが、これがなかなかいい方法がない。 .NET 環境…

ASP.NETこと始め

また、今日はASP.NETを始めるべく、IISをコンポーネントに追加した。IISはそもそも.NETFrameworkをインストールする前(即ちVSなんかをインストールする前)からコンポーネントとして既に追加されていなくてはならないらしい。が、今回のようにそうでない場…

Formのリサイズ

Formの中に作成したpanelをOpenGLの画面にした状態で、フォームのサイズをマウスで変更すると、サイズを拡大した場合には再描画がされるのに、縮小すると更新されない…。SizeChanged コールバックの中では、Invalidateを呼ぶようにするともちろん描画更新さ…

CRTPとテンプレートライブラリ

C++

Curiously Recurring Template Pattern (CRTP)とは、己自身を型パラメータとして実体化したテンプレートクラスを、己自身が継承している様を指す。このようなテンプレートクラスでは、その型パラメータとして受け取った任意型に対し、(それが任意型であるが…

Direct3D::Font他

using namespace Microsoft::DirectX::Direct3D;の下で、Fontとしてみても、System::Drawing::Font とバッティングしてしまうので、結局、わざわざMicrosoft::DirectX::Direct3D::Font としなくてはならないのであった。あるいは、Microsoft::DirectX まで見…

改行をbrに

改行をbrに変換してくれるツール。便利だ。

Fraps

本日のお気に入りソフトはFrapsだ。これを常駐させておくとOpenGLやDirectXアプリの画面の四隅のうち設定した場所に、その画面のFPSをリアルタイムに表示してくれる。自作の3Dソフトでやってみたところ、小さいモデルで30FPS、重たいモデルでは6か12であっ…

.NETコンポーネントへの参照設定

プロジェクトの「共通プロパティ」>「参照設定」の中に、Microsoft::DirectX::Direct3D があるから安心しただけではだめで、 Microsoft::DirectX や、Microsoft::DirectX::Direct3DXも、追加しておいた方がいいようだ。using namespace Microsoft::DirectX …

WindowsForm でOpenGL

vc2005/vc2008ならば、OpenGLアプリも、Win32ではなく.NETで作りたいところ。そんな時はOpenGLSimpleAdapterを利用するのが一番速くて簡単だと思うが、本日記はそのからくり(というほどでもないが)の説明にあたるのでよければ参考にして欲しい。 WindowsFo…

エクセルお勉強

エクセルお勉強のページ。あとははてなの使い方をちょっと覚えた。わかりにくいなあはてなのヘルプ。

C++/CLI で、Graphics::DrawString

C#のサンプルはたくさん見かけたが、C++/CLIでのサンプルは、結局わかりやすい記述がどこにも見つけられなかったからメモ。C++/CLI でやってるヤツなんていなかったりして。 private: System::Void panel1_MouseMove(System::Object^ sender, System::Window…