ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

DirectX

移植完了

入力デバイスとサウンドで出ていたエラーは単純にライブラリファイルの指定が足りなかっただけだった。dinput8.libとdsound.libを追加して無事ビルド完了。 最初はテクスチャやサウンドのデータファイルが足りなくて実行に失敗してしまったが、それも古いプ…

日本語版ドキュメント

DirectXのドキュメントの日本語版をダウンロードしていなかったので次のページにあるリンクからダウンロードした。 Developing games | Microsoft Docs バージョンはAugust 2009。SDKはJune 2010なのでちょっと古い。まあ、SDKに付属していた英語版のドキュ…

移植作業中

サウンド系でエラーになっていた原因がわかった。自前ライブラリではDirectXユーティリティライブラリ(DXUT)を利用しているのだが、元にしたサンプルプログラムではDXUT内のサウンドのコードがプロジェクトに追加されていなかった。そのため関数が見つからず…

環境構築

以前のライブラリではいろいろと問題があったので、別のものを利用することにした。 まずは簡単にテストできるようなフレームワークを作る。 そのために、いろいろと環境構築。

以前のプロジェクトを読む

前に作ったプロジェクトファイルを新しくインストールしたVisual C++に読み込ませてみたが、変換がうまくいかずプロジェクトをビルドすることができなかった。 結局、手作業でファイルの読み込みや設定をしなくてはならないようだ。

DirectX SDK (June 2010)

Developing games | Microsoft Docs DirectXのSDKをダウンロードしてWindows7のPCにインストール中。 Visual C++ 2010 Expressはインストール済み。

DirectX SDK (June 2010)

Download DirectX Software Development Kit from Official Microsoft Download Center DirectXの新しいバージョンがリリースされた。 このバージョンからVisual Studio 2005はサポートされなくなった。今、Windowsにインストールしてあるのは2005。というこ…

3DゲームファンのためのDirectX 11講座

3/30 後編へのリンクを追加3DゲームファンのためのDirectX 11講座(前編) 3DゲームファンのためのDirectX 11講座(中編) 3DゲームファンのためのDirectX 11講座(後編) もうDirectX 11の話が。結局、DirectX 10はまったく触ってない。というよりも最近3Dはほと…

DirectX SDK (August 2008) C++

DirectX SDK (August 2009) 久しぶりにDirectXの話題。 日本語ドキュメントの最新版が公開された。 以前はドキュメントのファイルをダウンロードしたけど、今ではオンラインですぐに参照できる。

サウンド処理落ちの対処

サウンドを最初に鳴らすときに処理落ちが起きる原因は分からず。 鳴らすときにファイルの読み込みをするのかもと思い、あらかじめファイルを読み込んでみたが変わらず。 サウンドのバッファに転送するために処理落ちするのだろうか。 とりあえずの対処として…

DirectSoundのサンプルフレームワークを使う その2

まず、CSoundManagerを作成する。 static CSoundManager* s_pSoundManager = NULL; void init() { s_pSoundManager = new CSoundManager(); s_pSoundManager->Initialize( DXUTGetHWND(), DSSCL_PRIORITY ); s_pSoundManager->SetPrimaryBufferFormat( 2, 22…

DirectSoundのサンプルフレームワークを使う

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…

typeidは使っちゃだめ?

DirectXのSample BrowserからSimpleSampleをインストール。そしてSimpleSample.cppのOnFrameMoveに次のようなコードを追加 class A { }; //-------------------------------------------------------------------------------------- // Handle updates to t…

メモリリークその3

メモリリークの原因を調べたところ、とあるクラスのメンバ関数を呼び出すとリークすることがあることが分かった。しかし、そのメンバ関数内ではメモリを確保するような処理は行っていない。それどころかメンバ関数内の先頭でreturnするコードにしてもメモリ…

メモリリークその2

昨日のメモリリークしたときに表示される情報がなんなのかわかった。何のことはない、そのアドレスのメモリ内容が表示されているだけだった。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 - November 2007

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を使うときのメモ

DirectX9になっても、DirectInputは8のまま。なので少し工夫が必要。 ・dinput.hのインクルード文の前に #define DIRECTINPUT_VERSION 0x0800 を定義。 ・dinput8.libをリンク

日本語ドキュメント

DirectInputの関数の使い方が分からなかったので日本語ドキュメントを見てみたら、自分のマシンにインストールされているのはDirectX Graphicsについてのものしかなかった。ということで最新の日本語ドキュメントをダウンロード。 http://www.microsoft.com/…

ジョイスティックの初期化

DirectXでXbox360タイプのコントローラでなく、普通のジョイスティックを使うような場合はDirectInput8を使う。8って付いているってことはDirectX8の頃からバージョンアップしていないということか…。 で、いまジョイスティックの初期化処理をコーディングし…

DXUT_GAMEPAD

DXUTmisc.hを眺めていたら、DXUT_GAMEPADという構造体があり、パッドの状態を取得するものだった。これは便利だとさっそくPS2のコントローラーをWindowsで使うコンバータを使ってつなげてみたがまったく反応なし。 結局、XInputのゲームパッド、つまりXBOX36…

フレームワークのデバッグ用文字列表示

出力ウィンドウにデバッグ用の文字列を表示する方法は分かったが、今度は画面上にデバッグ用の文字列を表示したかったので調べてみた。 サンプルフレームワークのSimpleSampleを見ると、SDKmisc.hに定義されているCDXUTTextHelperというクラスが使えそうだと…

フレームワークのDXUTTrace

フレームワークにはデバッグメッセージを表示するものとして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"' をソースに追加…