アットウィキロゴ
ノート > Direct3D 入門 > 2Dポリゴンの表示まで

参考サイトを挙げてちょっとメモを追加しただけで恐縮ですが・・。

最終的に出来上がるもの

Subversionリポジトリ内、下記の場所にプロジェクトがフォルダーごと挙げてあります
trunk/directx/ShowXFile_test20100510
詳しくはフォルダー内の Readme.txt を読んでください。

参考サイト

以下の記事を順番に試していくと、表題の通りDirectXの使い方が分かります。

  • Visual StudioのWin32プロジェクトで自動的に記述される部分に追記する形で説明してくれる
  • DirectX SDKのバージョンが「November 2008」
なので、大変参考になるかと。


残念ながらこれ以降は更新されていないようです。
(移転したとされているはてなダイアリーへのリンクも切れているので・・)

また、MSDNのリファレンスも参考になると思います。

注意0


  • 関数プロトタイプ宣言部の render() と cleanup() は本体か実際の呼び出し部分が Render(), Cleanup() と書かれているので、プロトタイプ宣言部も頭文字を大文字で書かないと
  • 何気なく書いてあって、Visual Studio が勝手に準備しておいてくれたものだと思っていた下記のマクロはちゃんと追加しましょう
#define FAILED(hr) (((HRESULT)(hr)) < 0)
#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)
  • 下記は閉じかっこが一つ足りない
if(FAILED (InitD3D(hWnd))
{
  return FALSE;
}

注意1

ポリゴンを表示してみる
の記事では、その通りやっただけでは真っ黒のウィンドウが表示されるだけで、三角形は表示されません。

「InitInstance関数にInitVB関数を実行する記述を追加する」
ということなのですが、InitInstance関数の記述部分を下記のように変更すれば三角形が正しく表示されるようになります。
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // グローバル変数にインスタンス処理を格納します。

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   if(FAILED (InitD3D(hWnd)))
   {
       return FALSE;
   }

   /* 書き加えた部分 ここから */
   if ( FAILED( InitVB() ) )
   {
	   return FALSE;
   }
   /* ここまで */

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

注意2

1>LINK : fatal error LNK1000: Internal error during IncrBuildImage
というエラーが出ることがありますが(荒川の環境だけかもしれませんが)、
その時はもう一度ビルドしなおすとうまく行くみたいです。

「プロジェクトのクリーン」をするか、デバックフォルダを消すと治るみたいです。

調べてみると、VisualStudio側のバグだとか・・(?)


追記情報とか

  • まとめ方とか見出し区切りとか、どんどん編集しちゃってかまわないです・・(汗) -- 荒川 (2010-02-17 18:25:11)
  • 注意2は「プロジェクトのクリーン」をするか、デバックフォルダを消すと治ります。 -- 村山 (2010-02-18 18:38:20)
  • そうだったのですか、ありがとうございます。 -- 荒川 (2010-02-19 11:21:16)
名前:
コメント:
最終更新:2010年05月13日 10:01