DirectX
入力デバイスとサウンドで出ていたエラーは単純にライブラリファイルの指定が足りなかっただけだった。dinput8.libとdsound.libを追加して無事ビルド完了。 最初はテクスチャやサウンドのデータファイルが足りなくて実行に失敗してしまったが、それも古いプ…
DirectXのドキュメントの日本語版をダウンロードしていなかったので次のページにあるリンクからダウンロードした。 Developing games | Microsoft Docs バージョンはAugust 2009。SDKはJune 2010なのでちょっと古い。まあ、SDKに付属していた英語版のドキュ…
サウンド系でエラーになっていた原因がわかった。自前ライブラリではDirectXユーティリティライブラリ(DXUT)を利用しているのだが、元にしたサンプルプログラムではDXUT内のサウンドのコードがプロジェクトに追加されていなかった。そのため関数が見つからず…
以前のライブラリではいろいろと問題があったので、別のものを利用することにした。 まずは簡単にテストできるようなフレームワークを作る。 そのために、いろいろと環境構築。
前に作ったプロジェクトファイルを新しくインストールしたVisual C++に読み込ませてみたが、変換がうまくいかずプロジェクトをビルドすることができなかった。 結局、手作業でファイルの読み込みや設定をしなくてはならないようだ。
Developing games | Microsoft Docs DirectXのSDKをダウンロードしてWindows7のPCにインストール中。 Visual C++ 2010 Expressはインストール済み。
Download DirectX Software Development Kit from Official Microsoft Download Center DirectXの新しいバージョンがリリースされた。 このバージョンからVisual Studio 2005はサポートされなくなった。今、Windowsにインストールしてあるのは2005。というこ…
3/30 後編へのリンクを追加3DゲームファンのためのDirectX 11講座(前編) 3DゲームファンのためのDirectX 11講座(中編) 3DゲームファンのためのDirectX 11講座(後編) もうDirectX 11の話が。結局、DirectX 10はまったく触ってない。というよりも最近3Dはほと…
DirectX SDK (August 2009) 久しぶりにDirectXの話題。 日本語ドキュメントの最新版が公開された。 以前はドキュメントのファイルをダウンロードしたけど、今ではオンラインですぐに参照できる。
サウンドを最初に鳴らすときに処理落ちが起きる原因は分からず。 鳴らすときにファイルの読み込みをするのかもと思い、あらかじめファイルを読み込んでみたが変わらず。 サウンドのバッファに転送するために処理落ちするのだろうか。 とりあえずの対処として…
まず、CSoundManagerを作成する。 static CSoundManager* s_pSoundManager = NULL; void init() { s_pSoundManager = new CSoundManager(); s_pSoundManager->Initialize( DXUTGetHWND(), DSSCL_PRIORITY ); s_pSoundManager->SetPrimaryBufferFormat( 2, 22…
DirectSoundのサンプルフレームワークを使うには、フレームワークをインストールしたフォルダのDXUT\Optinalにある SDKsound.cpp, SDKsound.h, SDKwavefile.cpp, SDKwavefile.h の4つのファイルが必要になるので、それをプロジェクトに追加。 そして、プロジ…
DirectXでラインを描画する方法。 ・ラインオブジェクトの作成 LPD3DXLINE pLine; D3DXCreateLine(DXUTGetD3D9Device(), &pLine); ・ラインの描画 D3DXVECTOR2 vPos[num]; D3COLOR Color; pLine->Begin(); pLine->Draw( vPos, num, Color ); pLine->End(); v…
DirectXのSample BrowserからSimpleSampleをインストール。そしてSimpleSample.cppのOnFrameMoveに次のようなコードを追加 class A { }; //-------------------------------------------------------------------------------------- // Handle updates to t…
メモリリークの原因を調べたところ、とあるクラスのメンバ関数を呼び出すとリークすることがあることが分かった。しかし、そのメンバ関数内ではメモリを確保するような処理は行っていない。それどころかメンバ関数内の先頭でreturnするコードにしてもメモリ…
昨日のメモリリークしたときに表示される情報がなんなのかわかった。何のことはない、そのアドレスのメモリ内容が表示されているだけだった。DとかTとか、何らかの意味があるのかと思ったら、メモリの中身がアルファベットのコードになっているだけだった。 …
DirectXのサンプルフレームワークを使っていると、アプリケーションを終了したときに確保したメモリがちゃんと解放されていない場合、メモリリークしたとエラーがVisualStudioの出力ウィンドウに表示される。 今作っているもので実際に出た例が次の通り。 De…
DirectXにはラジアンと度数の変換を行うマクロが定義されている。 #define D3DXToRadian( degree ) ((degree) * (D3DX_PI / 180.0f)) #define D3DXToDegree( radian ) ((radian) * (180.0f / D3DX_PI)) ちなみにPIは次のように定義されている。 #define D3DX…
DirectXのサンプルフレームワークでテクスチャを読み込む方法の一例。 #include "DXUT.h" #include "SDKmisc.h" void Load(const WCHAR* filename) { LPDIRECT3DTEXTURE9 pTexture; HRESULT hr; WCHAR path[MAX_PATH]; DXUTFindDXSDKMediaFileCch(path, MAX_…
・スプライトオブジェクトの作成 LPD3DXSPRITE pSprite D3DXCreateSprite(DXUTGetD3D9Device(), &pSprite); ・スプライトの描画 LPDIRECT3DTEXTURE9 pTexture; RECT SrcRect; D3DXVECTOR3 vCenter D3DXVECTOR3 vPos; D3DCOLOR Color; pSprite->Begin(D3DXSPR…
DirectX SDKの新しいバージョンがリリースされた。 http://www.microsoft.com/japan/msdn/directx/downloads.aspx Audio系とサンプルが更新されたらしい。 いまやっている部分とは関係なさそうなので、いまのが形になるまではインストールするのを待とう。
DirectInputを使ってキーボードのキー判定を行う方法のまとめ。 1.DirectInputオブジェクトの作成 #define DIRECTINPUT_VERSION 0x0800 #include <dinput.h> static LPDIRECTINPUT8 s_pDI = NULL; DirectInput8Create( GetModuleHandle(NULL), DIRECTINPUT_VERSION, II</dinput.h>…
DirectX9になっても、DirectInputは8のまま。なので少し工夫が必要。 ・dinput.hのインクルード文の前に #define DIRECTINPUT_VERSION 0x0800 を定義。 ・dinput8.libをリンク
DirectInputの関数の使い方が分からなかったので日本語ドキュメントを見てみたら、自分のマシンにインストールされているのはDirectX Graphicsについてのものしかなかった。ということで最新の日本語ドキュメントをダウンロード。 http://www.microsoft.com/…
DirectXでXbox360タイプのコントローラでなく、普通のジョイスティックを使うような場合はDirectInput8を使う。8って付いているってことはDirectX8の頃からバージョンアップしていないということか…。 で、いまジョイスティックの初期化処理をコーディングし…
DXUTmisc.hを眺めていたら、DXUT_GAMEPADという構造体があり、パッドの状態を取得するものだった。これは便利だとさっそくPS2のコントローラーをWindowsで使うコンバータを使ってつなげてみたがまったく反応なし。 結局、XInputのゲームパッド、つまりXBOX36…
出力ウィンドウにデバッグ用の文字列を表示する方法は分かったが、今度は画面上にデバッグ用の文字列を表示したかったので調べてみた。 サンプルフレームワークのSimpleSampleを見ると、SDKmisc.hに定義されているCDXUTTextHelperというクラスが使えそうだと…
フレームワークにはデバッグメッセージを表示するものとしてDXUTTraceというのも用意されている。定義は次のとおり。 HRESULT WINAPI DXUTTrace( const CHAR* strFile, DWORD dwLine, HRESULT hr, const WCHAR* strMsg, bool bPopMsgBox ); strFile ファイル…
サンプルフレームワークにはデバッグのための文字列表示関数DXUTOutputDebugStringが用意されている。定義は次のとおり。 void WINAPI DXUTOutputDebugStringW( LPCWSTR strMsg, ... ); void WINAPI DXUTOutputDebugStringA( LPCSTR strMsg, ... ); #ifdef U…
DirectXのフレームワークに自分が作成したクラスを追加しようと、cppファイルをプロジェクトに追加してコンパイルしようとしたら、 fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "DXUT.h"' をソースに追加…