DirectX11ことはじめ

2019年もひと月が過ぎて2月になりました。
2019年としては今更感がすごいのですが、DirectX11に触り始めました。

というのも現在使っているPCがWindows10になってからVisual Studioでゲームらしいものを作っておらず、過去に作りかけたプロジェクトを開いてみるも環境が違うためビルドができないという状態になってしまっていまして。
以前の環境がWindows7+Visual Studio 2010なので、一気にVisual Studio 2017にバージョンアップしようものなら浦島太郎状態にもなるものですね。
DirectX10でのスケルトン的なものは以前に作っていたので、それをもとにDirectX11に書き換えてみるところから始めてみました。


そして最初に引っかかったのが「DirectX11のSDK探し」。Windows10では既にDirectX SDKとしての配布はされておらず「Windows10 SDK」に含まれている形であるため、インクルードパス等を指定せずにそのまま#include と書くだけで大丈夫だったのでした。ここに気付くまでに結構な時間がかかるというアレ。

スケルトン部分に関しては、DirectX10のコードの7割程度は流用できる雰囲気。シェーダに使っていたfxファイルは使えなくなっており、DirectX11では頂点シェーダvshとピクセルシェーダpshを個別にビルドして使う形?のようです。
シェーダのビルドのVS2017上で行えるので、これは便利ですね。

DirectX10で頂点を扱ううえで多用していた「D3DXVECTOR3」等の構造体がごっそりなくなっている点も戸惑いました。
DirectXMath.hをインクルードした上で「DirectX.XMFLOAT3」などを使うことになっているようですね。using DirectX;と書いておけばXMFLAOT3と書くだけで使用でき比較的近い形になるものの、後々問題が起こらないかは少し気になるところ。

大部分は参考サイトのコードを引用しながら、なんとか立方体を描画することができました。

ゲームを作るうえでここがスタートラインという感じでしょうか。

ここまでの実作業時間はおそらく数時間。Unity等のゲームエンジンを使うとこの程度は数分でできそうですね。
Unityの他にLÖVEでもそうですが、最初の環境を整えるまでの面倒な手間を大幅に削減できるだけでもゲームエンジンを使うメリットは十分にあると言えます。ウィンドウを作って何やかやとするまで画面に何も表示されずひたすら打ち込むのみというのは、特に初めての人には精神的に辛いところです。頑張って打ち込んだ結果画面に何も表示されないこともざらにあるのでなおさら。
今回自分も、コードは正しいはずなのに何故か何も表示されないことで小一時間悩みました。
描画フレームで毎回ClearDepthStencilViewが呼ばれていなかったことが原因でした。

あとはこれを土台にして以前作りかけたプロジェクトを移植するところまで進めてみようと思います。

どうでもいいことですが、DirectX9から触っている割に今までDirectX製のゲームを一つも公開できていません。謎。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です