DirectX

スキンメッシュ読み込みクラス

ゲームコーディング〈Vol.1〉Direct3D/COM編―「DirectX9」「VisualC++.NET2003」「VisualC++.NET」「VisualC++6.0」対応 (IO BOOKS)を参考にスキンメッシュ読み込みクラスを作成。 ただ、kenmoのSDKのバージョンは9.0bなので、9.0cの方は少し修正を加える必…

DirectInput::Aquire()

何か、たまーにキー入力でおかしい動きをするので、 YANESDK3RDのコードを読んでみたところ、 Aquire()に失敗したときの処理が抜けていることを発見しました! …うーむ、勉強になります。

ブルースクリーン

昨日初めて、Direct3DでOSごと落ちました…(´Д`; 理由はよく分からないのですが、 カメラ座標とカメラの注視点を思いっきり近づけたらかな? もしくは、ビュー座標に初期化していないポインタを突っ込んだから? ということじゃないかと思っています。 …う…

3Dゲームの最適化

DirectX9.0 3Dアクションゲーム・プログラミング―DirectXを使った3Dアクション・ゲーム作成のノウハウ (I・O BOOKS)に色々書いてあったので、メモ書き。 カメラ視点に入らないオブジェクトの処理をしない(可視判定) 手前にあるオブジェクトから描画する(…

スプライト構造体

最近、不真面目な更新が多いので、 今日は真面目路線で、私が使っているタスクシステムもどきの解説をします。 C++でやるなら、本当ならクラスでやるべきなのですが、 モノグサな私は、構造体でスプライトを定義しています。 (…不真面目じゃん) まずはユー…

XPのSP2

なんとなくXPのSP2を入れてみたら、自作のDirectXライブラリが動かなくなりました…。 問題なのは、フルスクリーン時にデバイスが取得できないのと、 ウィンドウプロシージャの呼び出しあたりの動きがおかしいみたいです。 そこで、パラメータをいじくり回し…

DirectX再々入門(CD3DMesh)

同じくメモ書きで書きかけ。 SDKサンプルのCD3DMeshを解析。 メンバ変数 TCHAR m_strName[512]; // ファイル名 LPD3DXMESH m_pSysMemMesh; // SysMem mesh, lives through resize LPD3DXMESH m_pLocalMesh; // Local mesh, rebuilt on resize DWORD m_dwNumM…

DirectX再々入門(ユーティリティ)

D3DXMATERIAL構造体 メンバ MatD3D:マテリアルのプロパティを記述する D3DMATERIAL9 構造体。 pTextureFilename:テクスチャのファイル名を指定する文字列へのポインタ。 LPD3DXBUFFER pMtrlBuffer = NULL; D3DXLoadMeshFromX( strPath, D3DXMESH_SYSTEMMEM, …

DirectX再々入門(View-Projection-World)

Direct3Dがよく分からなくなったので、 自分のためのメモ書き。 メンバ変数 // マトリクス struct View // カメラの配置 { D3DXVECTOR3 pos; // カメラ座標 D3DXVECTOR3 lookat; // 注視点 D3DXVECTOR3 up; // 傾き }; View m_viewP; D3DXMATRIX m_view; str…

テクスチャのサイズが2^xでなければならない理由

ミップマップチェーンのサイズを2^xで作るから。 勘ですが…(´Д`;

DirectXFramework0.2

前とあまり変わらないけれども…。 DirectMusicだけで、BGMと効果音再生を担当できることが分かったので、 (いまさら?) DirectSoundクラスは消滅。 CTextureやCOggの管理は、STLのmapでDirectGraphicsとDirectMusicクラスが管理。 mapのkeyはenumでグロー…

3点から平面を求める方法

例題 3点(1, 2, -3) (-1, 2, 3) (1, -2, 3)を通る平面方程式を求めよ。 アプローチ 求める平面方程式をとする。 答え x,y,zの値をそれぞれ代入すると、 うまくの形に持っていくと、 となり、 となるから、 (1, 2, -3)を代入すると、 より、 ちなみにDirectX…

平面方程式

3Dの基本の平面方程式について。 3次元空間で、平面を表現する式は以下のようになります。 平面を作るには、この式を作る必要があります。 ※この平面の法線ベクトルは(a, b, c)になります。 必要となる情報は、 平面上の任意の点 平面の法線ベクトル です。 …

DirectX再入門7

ステンシルテスト 「レンダリング結果」を「ステンシルバッファ」でマスクする機能 レンダリング |→ステンシルテスト ステンシルバッファ 何に使えるか? モデルのシルエットなどに基づいて、画像を切り抜く 鏡や水面の表現などが可能 ステンシルバッファ …

DirectXFramework

まだデバイス管理とシーン遷移管理しかないですが…。 Frameworkの外の部分が、実装するとこです。 CSceneResourceLoaderクラスは、 起動時に「Now Loading... 24%」みたいに、 画像ファイルやサウンドファイルの読み込み画面の表示です。 CSceneXXXクラスで…

テクスチャリソースへのアクセス(TODO)

試してないのですが、こんな感じでテクスチャのピクセルにアクセスできそう。 テクスチャのタイプは、D3DPOOL_SYSTEMMEMでないと、ロックできないみたいです。 // テクスチャ情報取得 IDirect3DTexture9::GetLevelDesc(0, D3DSURFACE_DESC*); // テクスチャ…

DirectX再入門6

マルチターゲットレンダリング テクスチャにリアルタイムにレンダリングすること。 テクスチャにレンダリング(1パス) バックバッファにレンダリング(2パス) パスが複数あることから、マルチパスレンダリングとも言う。 1つのパスごとに、ビュー行列な…

DirectX再入門5

キーフレームアニメーション パラメータとして、以下のものを指定する。 移動先の座標を指定する 移動時間を指定する この2つのパラメータに、「経過時間」を加え、移動している間の座標を計算する。 これにより、中間の座標のパラメータを省略することがで…

DirectX再入門4

テクスチャラッピングモード テクスチャの切り出しのUV座標を大きめにとった場合の処理方法を指定する。 ID3DDevice::SetSampleState(index, type, value) typeにD3DSAMP_ADDRESSUまたはD3DSAMP_ADDRESSVを指定して、 valueに以下の値を指定する。 D3DTADDRE…

DirectX再入門3

頂点シェーダとピクセルシェーダ 頂点シェーダは頂点単位で処理を行うが、 ピクセルシェーダは一つ一つのピクセル単位で処理を行う。 そして、ピクセルシェーダが行う処理の中で特に重要なのが、テクスチャマッピングである。 テクスチャマッピング 模様(テ…

DirectX再入門2

ビューポート デバイスから取得。 アスペクト比を求めるのに使用。 光源(D3DLIGHT9) 光源の種類 .Type ディレクショナルライト(平行光源)…D3DLIGHT_DIRECTIONAL ポイントライト(点光源) スポットライト(ある領域を照らし出す) マテリアル ポリゴンを構…

DirectX再入門

ああ、もう、自分のためのメモ書きです、、(´Д`; DirectXGraphicsにおけるレンタリングパイプライン デバイス:IDirect3D9(デバイス作成) 入力1 :IDirect3DVertexBuffer9(ポリゴンデータ) 入力2 :IDirect3DTexture9(テクスチャ画像) 処理 :IDi…

画像サイズ

まだLPDIRECT3DTEXTURE9(テクスチャ)とLPD3DXSPRITE(スプライト)しか使えていないので、 どちらが原因か分からないのですが、 画像サイズが縦横共にでないと、勝手に画像サイズを伸ばしたりしちゃうみたいです。 (バージョンはDirectX9.0bです)

eff

PythonからDirectXを呼べるものがあったのですね…。 pygameをインストールしなくてもいいのが素晴らしいですね。 …さて、、PyHSPとeffとどちらを使うべきであろうか、、。 どちらも甲乙つけがたいですね(´▽`

FPS固定

DirectXの場合、なにも描画しないと500fpsとかとんでもない数値が出てしまいます。 何とかならないものかな…、と調べてたところ、 http://tpot.jpn.ph/t-pot/program/103_FPSFixing/ いいものが見つかりました。 FPSがかなり安定してスッキリです。

DirectXライブラリ自作3

今日も朝8時に起きてライブラリ製作。 やっぱり苦戦しました、DirectMusic様。 HSPで使ったときもなぜか再生されない場合があり、泣く泣くMCI再生にしたことがありました。 今回もなぜかMIDIが再生されません。 デバック実行で、 IDDirectMusicPerformance8…

DirectXライブラリ自作2

DirectX 9実践プログラミング―「グラフィック」「オーディオ」「ネットワーク」「入力」--ゲーム作りに役立つ機能の基礎から応用まで (I/O別冊)を参考に、2日かけてDirectSoundのラッパークラスを作成。 半日ぐらいでできると思ったのですが、dxutil.hとdsu…

3Dグラフィックス

頂点バッファ 頂点データの集まり。 インデックスバッファ 頂点データの並びを指定する。 プログラマブルシェーダ 頂点シェーダとピクセルシェーダがある。 シェーダの記述 アセンブリかHLSLを使う。 Zバッファ 奥行きの座標

スプライト

昔、ゲーム雑誌を読んだ記憶では、 自機スプライト、敵スプライトというように、 別々のスプライトで定義していたので、 「一つのテクスチャに一つのスプライトを作らなければならない」 という先入観を持っていたのですが、 DirectXでは、スプライトは「テ…

DirectXライブラリ作り

現在、DirectXライブラリを作成中です。 正直、かなり楽しいです。 他人が作ったライブラリは、どうしてもその人の趣向が多少なりとも入っていて、 ここはちょっと使いづらいな…、という部分が必ずあるわけです。 ですが、自作してしまえば、 「自分が使いや…