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

階層型有限状態機械(Hierarchical Finite State Machine)の実装

C++

前回有限状態機械(Finite State Machine:FSM)の実装 - while( c++ );の続きです。 参考サイト http://www.issei.org/diary/?20040108 以下のような階層化されたステートマシンを実装します。 現在の状態 イベント 次の状態 アクション start state_0 state…

有限状態機械(Finite State Machine:FSM)の実装

C++

マルチスレッドなアプリケーションの状態遷移が楽になるかも? ということで、ステートマシンを使ってみます。 参考サイト、書籍 The Boost Statechart Library - Tutorial - 1.36.0 ゲームAI連続セミナー「ゲームAIを読み解く」 第4回 レポート (1/3):Code…

MVC

こちらOpenGL GUI Applicationを参考にMVCを使ったwindowsアプリに修正します。 まずは、OpenGLを使わずに単純なアプリで実験します。 ボタンを押した回数をカウントするだけのアプリ download VC++2008EE MVC Model アプリケーションのデータを動作を定義 V…

OpenGLを使ってみる。その4.2 -描画スレッドの停止条件を追加(WM_ENABLE)-

前回OpenGLを使ってみる。その4.1 -描画スレッドの停止と再開について- - while( c++ );のサンプルでバグがあったので修正します。 1.メニュー→ヘルプ→バージョン情報でモーダルダイアログを表示すると、ウィンドウが無効状態でも描画スレッドが実行さ…

SDKっぽいプロジェクトの作り方。

C++

DirectX SDKのようなSDKを作ってみましょう。(DLLは次の機会に) プロジェクトの設定 とりあえず以下のような構成でプロジェクトとディレクトリを作成します。 (VC++2008ExpressEdition) app(Win32プロジェクト) sdk(スタティックリンクライブラリ) i…

OpenGLを使ってみる。その4.1 -描画スレッドの停止と再開について-

前回OpenGLを使ってみる。その4 -描画スレッド- - while( c++ );のサンプルでは、ウィンドウのリサイズ時(WM_SIZE)のみ描画スレッドを停止していました。 つまり、ウィンドウを最大化・最小化した時や、メニューを選択している時も描画ループが実行されま…

OpenGLを使ってみる。その4 -描画スレッド-

リアルタイムな描画を行うために、描画スレッドを導入します。 一般的にはメインスレッド内でPeekMessageを使ってwindowsイベントを処理し、 アイドル時に描画する形になると思いますが、 メインスレッドはwindowsイベントに専念し、サブスレッドで描画して…

OpenGLを使ってみる。その3 -テクスチャ-

※terragenで生成した画像です。 サンプル opengl03.zip VC++2008EE OpenGLには画像をロードするための関数が用意されていません。 そのため、自力でロードするか、既存のライブラリを利用することになります。何を使うか迷ったのですが、プラットフォームはw…

OpenGLを使ってみる。その2 -2Dポリゴンの描画-

まずは2Dポリゴンを描画します。 サンプル [download] VC++2008EE ビューポートの設定 スクリーン上の座標で頂点座標を指定できるように、ビューポート、プロジェクション行列、ビュー行列を設定します。 プロジェクション行列はglOrthoで正射影行列を設定…

OpenGLを使ってみる。その1 -初期化編-

OpenGLのレンダーターゲット周りを触ってみたくなったので、しばらくOpenGLを使っていきます。久しぶりのC++です。 開発環境 windows vista/xp VC++2008ExpressEdition c++ wgl(GLUTは使わない) ウィンドウを作る 面倒なのでWin32アプリケーションウィザード…

実行効率と実装効率のトレードオフ?

DirectXのレンダーターゲットの管理がちょっと面倒になってきました。 レンダーターゲット、Zバッファの作成 バックバッファ、Zバッファの退避 レンダーターゲットの設定 HLSLの変数の設定 描画 レンダーターゲット、Zバッファを元に戻す レンダーターゲット…

「遅延レンダリング」と言うらしい。

遅延レンダリングの詳細に関してはこちらをどうぞ。 http://www.twin-tail.jp/index.php?DirectXGraphics%20-%20%E9%81%85%E5%BB%B6%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E5%9F%BA%E6%9C%AC 色、法線、位置をテクスチャに出力す…

PostProcessっぽい何か。

ようやくそれっぽいものが出来たので、アップしておきます。 後はエフェクトファイルを追加するだけです。 サンプル post_process02.zip VC#2008EE用 VertexShader2.0以上、PixelShader2.0以上 使い方 「active effects」内のエフェクトが上から順に実行され…

マルチレンダーターゲット

DirectX SDKの「Post Process」的なものを作るために、 まずはマルチレンダーターゲットを試してみました。 1パスで同時に3つのテクスチャに描き込んでいます。 左上から通常のシーン、Normal Map(法線マップ)、Position Map(位置マップ)、 位置マップ…

Gaussian Blur

いい感じでぼけてます。 Variance Shadow Map用にGaussian Blurを実装しました。 と言っても、t-potさんのコピペですw 浮動小数点バッファ(Format.G32R32F)を使っているため、青くなるようです。 参考サイト http://tpot.jpn.ph/t-pot/program/79_Gauss/i…

DirectX SDKのPostProcessで遊んでみる。

いろんなエフェクトを組み合わせて、すぐに結果を確認できるのは便利ですね。 とりあえず、このサンプルで用意されているエフェクトを全て自分で実装してみます。

RenderTargetクラスを作る

テクスチャに対してレンダリングするためには、 Usage.RenderTarget、Pool.Defaultを指定して作ったテクスチャ 3D描画を行う場合の深度バッファ 実際の描画先となるテクスチャのサーフェイス の3つが必要になります。 さらに、デバイスのResizingイベント時…

シャドウマップの改良 -側面のジャギーを軽減-

前回HLSLで影の描画 -シャドウマップ- - while( c++ );のシャドウマップを使った影の描画を、もう少しキレイにしてみます。 特にライトへのベクトルと面の法線ベクトルのなす角が90度に近い部分の汚い影ですね。とりあえず、らしく見えれば良いということで…