プログラミング実践 ~第1回~

Posted by kawatani Wed, 25 Jul 2007 08:30:00 GMT

私の担当では、ゲームプログラミングを通じて、C++言語、アルゴリズム、3DCGプログラミング、静止・動画像処理などについて、長期に渡り書いていきたいと思いす。それを通じて、自身のスキル向上、及び、各種分野の知識を総合的に蓄えていくことを目標としています。

DirectX

まず、ゲームを製作しようとした時に、各文献、Webサイトなどでほぼ確実に見かけるキーワードとして、『DirectX』というものがあります。そこで、まずは、自身も初めて触れることになる、この、DirectXについて、しばらくは書いていくことにします。

なお、参考文献として、(株)ソフトバンククリエイティブ発行、著:N2Factoryの『DirectXゲームグラフィックスプログラミングVer.2.0』を使用しています。

まず始めに、そもそもどういったものであるかというと、1995年にGame SDKとして、それまではマルチメディアハードウェアの基本的な機能しか扱うことができなかった当時のWindowsにおいて、ハードウェアの違いを気にせず、しかもハードウェアの性能を最大限に引き出せるAPIとして誕生しました。バージョンとしては、Windows VistaにおいてはDirectX 10が採用され、少ない処理量で、より綺麗なグラフィック描写が可能となってきています。ただし、WindowsXPでは9.0までしか対応しておらず、この連載においてはDirectX 9.0を用いることとします。

DirectX 9.0の構成

次に、DirectX 9.0の構成についてです。まずは、下の図を見てください。

component_of_directx
図:DirectX 9.0のコンポーネントの構成

このように、DirectXでは、機能ごとに複数のコンポーネントに分かれています。それぞれを間単に説明すると、

  • DirectInput…マウス、キーボードなどの直接入力サポート
  • DirectShow…マルチメディアストリームの再生等
  • DirexctX Media Object…ストリーミングメディアの結合と制御
  • DirectSound…WAVE再生、3Dサウンド、サウンドエフェクト
  • DirectPlay…ネットワークゲーム
  • DirectMusic…MIDI再生、各音源の再生
  • DirectSetup…DirectXアプリのインストールサポート
  • DirectX Graphics…高度な2D&3Dグラフィックス

という具合になっています。そこで、今回メインで学習していくDirectX Graphicsについてもう少し見ていくことにします。

DirectX Graphics

バージョン7.0までは、DirectDrawとDirect3Dという2つのコンポーネントにより、それぞれ、2D、3Dの描画を担当していました。しかし、それらを同時に表示するといった場面では、手続きが面倒だったりといったことが生じ、この2つを統合したものがDirectX Graphicsです。

これが提供している主な機能として、まず、各種ビデオカードのサポートがあります。これにより、対応したビデオカードを用いることで、ドライバがハードウェアの違いを吸収してくれます。さらに、プログラマブルシェーダのコントロールなども可能です。次に、定型処理の自動化があります。これは、従来は、画像フォーマットを調べたりしたうえで、透明化などを行っていましたが、それを簡単に行うような仕組みが提供されています。最後に、フルスクリーンモードがあります。これは、Windows標準のAPIだけでは実現できない機能です。

このように、DirectX Graphicsを用いることにより、より高度なグラフィックス処理を比較的簡単に実装することが可能となったわけです。

次回予告

次回は、DirectX SDKのインストール、VisualC++.NETの設定、DirectX Graphicsプログラムの基本的な仕組みの部分に触れたいと思います。

Posted in  | Tags ,