Download - ほら、怖くないDirect x11入門
#garibenhttp://gariben.orgがりっち勉強会
ほら、怖くない DirectX11 入門
Ryota Togai @garicchi
#garibenhttp://gariben.orgがりっち勉強会
自己紹介
栂井 良太 Ryota Togai
@garicchi
Microsoft Student Partners
https://www.facebook.com/garicchi
がりっち勉強会主催 (2012 ~ )
http://garicchi.com
#garibenhttp://gariben.orgがりっち勉強会
いきなりですが
JR 電車の網棚の上にパソコン忘れました
現在捜索中…
スーツと
#garibenhttp://gariben.orgがりっち勉強会
ThinkPad X240 買いました
配送日→ 1/11
マルチタッチ、 FHD 、フロントリアバッテリーなどもりもり
#garibenhttp://gariben.orgがりっち勉強会
卒論初稿提出できました
年末 → 謎に Twitter クライアントつくる
年明け → 卒論の初稿提出日 (1/10) ががりべん (1/11) の前日と気づく
↑ ここまで卒論もがりべんも 1byte も進捗なし
ここ 1 週間 → 毎朝 5 時寝
#garibenhttp://gariben.orgがりっち勉強会
Neuronia
for Windows Store
#garibenhttp://gariben.orgがりっち勉強会
Agenda自己紹介What’DirectX11
DirectX の環境DirectX11 入門DirectX on WindowsStoreApps
DirectX の勉強方法DirectX プロジェクトの全体像
補助ライブラリのはなしおわり
#garibenhttp://gariben.orgがりっち勉強会
What’s DirectX11?
#garibenhttp://gariben.orgがりっち勉強会
DirectX とはWindows プラットフォームにおいて高度なグラフィック処理やゲーム開発の API 群
グラフィックボードやハードウエアと OS との互換性をたもつために開発された
最近は GPGPU などのためにも存在→GPU を使った高速演算処理
#garibenhttp://gariben.orgがりっち勉強会
Windows ゲームの標準技術に
#garibenhttp://gariben.orgがりっち勉強会
DirectX の歴史DirectX1.0
DirectX2.0
DirectX3.0
DirectX4.0
DirectX5.0
ゲーム開発用 GameSDK としてリリース
Direct3D の登場
DirectDraw DirectSound DirectPlay← ネットワーク
DirectSound3D 登場、 DirectInput の統合
DirectX3.0 からの変更点がわずかだったためにリリースされず
Wikipedia より
#garibenhttp://gariben.orgがりっち勉強会
DirectX の歴史 2DirectX6.0
DirectX7.0
DirectX8.0
DirectX9.0
DirectX10.0
DirectX11.0
Direct3D の強化
Windows2000 に搭載、 Direct3D の機能強化
DirectDraw と Direct3D が統合 WindowsXP に搭載
各コンポーネントの強化
WindowsVista 以降 ManagedDirectX 開発終了
XNA 開発終了WindowsSDK と統合Windows8 のサポート
#garibenhttp://gariben.orgがりっち勉強会
!?
#garibenhttp://gariben.orgがりっち勉強会
ManagedDirectX
.NetFramework から DirectX の機能を使えるようにするためのプラットフォーム
.Net の言語ならすべてサポートするが主に C# での利用が主
#garibenhttp://gariben.orgがりっち勉強会
ManagedDirectX
XNA に統合するためにわずかバージョン 2.0 で開発終了
#garibenhttp://gariben.orgがりっち勉強会
XNA
マイクロソフトによるコンピュータゲームデザイン、開発および管理を促進することを目的としたゲーム開発のためのツール
開発言語は C#
#garibenhttp://gariben.orgがりっち勉強会
XNA
2014 年 4 月に開発終了 ( あと 3 か月の命 )
#garibenhttp://gariben.orgがりっち勉強会
マイクロソフトはC# でゲームを作らせる気がない?
#garibenhttp://gariben.orgがりっち勉強会
Windows ゲームプラットフォーム
DirectX Unity XAML+C# JavaScript+Enchat.js
学習コスト
JavaScriptC#C#C++
#garibenhttp://gariben.orgがりっち勉強会
Unity とかいうべんりなもの
C# で書ける全プラットフォーム対応ゲームエンジン
3D モデルやワールドなどアセットストアが充実
Windows8 のゲームもつくれる!
#garibenhttp://gariben.orgがりっち勉強会
DirectX VS Unity
Directx Unity生産性 <
Directx Unity学習コストの低さ <
Directx Unity対応プラットフォーム <
Directx Unity自由度 >
#garibenhttp://gariben.orgがりっち勉強会
ツール化されたゲームエンジン
学習コストは低くて生産性も高いが自分の実力で作った感じがしない…
#garibenhttp://gariben.orgがりっち勉強会
あえていばらの道を行こうではないか
DirectX
#garibenhttp://gariben.orgがりっち勉強会
DirectX の環境
#garibenhttp://gariben.orgがりっち勉強会
DirectX11 の動作する OS
Windows Vista Windows 7 Windows 8 Windows 8.1
Windows XP
#garibenhttp://gariben.orgがりっち勉強会
DirectX の環境
VisualStudio2010 以前 DirectX SDK をダウンロードしてインストール
VisualStudio2012 以降 Windows8.1 に標準付属
#garibenhttp://gariben.orgがりっち勉強会
VisualStudio2010 以前
公式サイトから SDK をダウンロード
http://www.microsoft.com/ja-jp/directx/default.aspx
#garibenhttp://gariben.orgがりっち勉強会
VisualStudio2012 以降
WindowsSDK と DirectXSDK が統合
http://msdn.microsoft.com/ja-jp/windows/desktop/hh852363
#garibenhttp://gariben.orgがりっち勉強会
まとめ
これから DirectX する人はとりあえず VS2013 入れよう!
#garibenhttp://gariben.orgがりっち勉強会
DirectX11 入門
#garibenhttp://gariben.orgがりっち勉強会
DirectX11 が提供するものライブラリ 説明Direct3D 3D グラフィックスのレンダリングDirect2D 2D グラフィックスのレンダリングDirectXMath 2D 、 3D の数学演算ライブラリDirectWrite 2D テキストのレンダリングXAudio2 オーディオ API
XInput XBOX360 コントローラに重点をおいているらしい入力ライブラリ
http://msdn.microsoft.com/ja-jp/library/windows/apps/hh465061.aspx
#garibenhttp://gariben.orgがりっち勉強会
DirectX の用語コンピュートシェーダ
レンダリング
スワップチェイン
グラフィック専用 CPU である GPU をグラフィック以外の演算にも使用することGPGPU の世界
描画データや描画ルールなどを実際の画素の集合にすることするもの→レンダラー
フロントバッファとバックバッファの切り替えをする機能
#garibenhttp://gariben.orgがりっち勉強会
DirectX の用語 2
シェーダー頂点シェーダーとピクセルシェーダーがある
頂点シェーダー
ポリゴンの頂点データの集まりを画面上の座標に合わせる
ラスタライズ頂点シェーダーの後、頂点集合をピクセル集合にする
ピクセルシェーダーラスタライズの後、ピクセル集合の色を決定する
#garibenhttp://gariben.orgがりっち勉強会
DirectX11 OnWindows Store Apps
#garibenhttp://gariben.orgがりっち勉強会
今日勉強すること
DirectX11
DeskTop App
Windows Store App
WindowsPhone
#garibenhttp://gariben.orgがりっち勉強会
ストアアプリの DirectX
高度なグラフィック処理を必要とするアプリ高度なグラフィック処理を必要としないアプリ
→C#+XAML
#garibenhttp://gariben.orgがりっち勉強会
画面モードDesk Top App
ウインドウモード
フルスクリーンモード
Windows Store App
フルスクリーンモード
基本的にフルスクリーンなので画面モードを気にする必要がない
#garibenhttp://gariben.orgがりっち勉強会
ということもなく…スナップ時でもゲームがプレイできる例
DirectX サンプル Marble Maze
解像度対応は必要ないといったな、あれは嘘だ
#garibenhttp://gariben.orgがりっち勉強会
スナップでゲームをする必要性艦〇レみたいなシミュレーションゲーム
わかる
高度なグラフィックを用いるゲーム
わからない
#garibenhttp://gariben.orgがりっち勉強会
スナップ時はゲームを止めよう
スナップ時にゲームが一時停止する例
DirectX3D シューティングゲームサンプル
#garibenhttp://gariben.orgがりっち勉強会
XAML との調和DirectX11.2 は XAML と DirectX の共存が可能
XAML コードビハインドが描画クラスを呼び出す
#garibenhttp://gariben.orgがりっち勉強会
XAML との調和で楽になること
ボタンとかを自分で作る必要がない
アプリバーをつけることができる
簡単なら 2D グラフィックなら XAML コントロールを用いることで簡単化
#garibenhttp://gariben.orgがりっち勉強会
入力を考える
今までの DirectX
マウス キーボード
ゲームパッド
NUI
これからの DirectX
タッチ 加速度センサー スタイラス?
#garibenhttp://gariben.orgがりっち勉強会
ここまでのまとめDirectX は Windows ストアアプリでめんどくさくなったり楽になったりする部分がいろいろある
画像拝借元→ http://wakearikyoumi.up.n.seesaa.net/wakearikyoumi/image/130515170812339425.jpg?d=a1
#garibenhttp://gariben.orgがりっち勉強会
DirectX11 プログラミングの全体像
#garibenhttp://gariben.orgがりっち勉強会
XAML を使わない DirectX の場合
DirectX アプリケーションを選択
#garibenhttp://gariben.orgがりっち勉強会
コンパイル
3D ポリゴンが表示される
#garibenhttp://gariben.orgがりっち勉強会
ソリューションを見る重要なヤツ
DeviceResources.cpp
~ Renderer.cpp
[ プロジェクト名 ]Main.cpp
App.cpp
#garibenhttp://gariben.orgがりっち勉強会
DeviceResourcesコンストラクタによってほぼすべてのクラスに渡されるDirectX の主要機能が入っている
DeviceContext には描画メソッドがはいってたりする
App.cpp によって生成される
#garibenhttp://gariben.orgがりっち勉強会
DirectX のインターフェース名
インターフェースを表す
3D であることを表す
DirectX11 であることを表す
長い… .
#garibenhttp://gariben.orgがりっち勉強会
~ Renderer.cpp
描画コンポーネント ( レンダラー )
描画するオブジェクトごとにまとめられ、リソース読み込み、更新、描画、リソース解放メソッドを持つ
Sample3DSceneRenderer→真ん中にあるデカいポリゴン
SampleFpsTextRenderer→右下にある FPS
#garibenhttp://gariben.orgがりっち勉強会
[ プロジェクト名 ]Main.cpp
複数のレンダラーを管理するクラス
Renderメソッドでレンダラーをまとめて描画
Updateメソッドでレンダラーをまとめて更新
#garibenhttp://gariben.orgがりっち勉強会
App.cppアプリケーションのエントリポイント
アプリのレジュームやサスペンドなどのイベントをうけとる
DeviceResource のインスタンス、[ プロジェクト名 ]Main のインスタンスを持つ
While ループ内で更新→描画を行う
#garibenhttp://gariben.orgがりっち勉強会
なぜ更新が先か?描画が先の場合
キャラ移動 &判定
ユーザーが入力
描画
_人人人人人人_> 突然の死 < ̄ Y^Y^Y^Y^Y ̄
#garibenhttp://gariben.orgがりっち勉強会
なぜ更新が先か?更新が先の場合
ユーザー入力
描画
キャラ移動&判定
_人人人人人人_> 生きる < ̄ Y^Y^Y^Y^Y ̄
#garibenhttp://gariben.orgがりっち勉強会
更新が先な理由
わずか 1 ループでもユーザー入力のうけつけを先に行わないと描画内容とのタイムラグが起きてしまう
クソゲー
#garibenhttp://gariben.orgがりっち勉強会
DirectX プロジェクトの構成
App.cpp
[ プロジェクト名 ]Main.cpp
Simple3DSceneRenderer.cpp
SimpleTextFpsRenderer.cpp
所有
所有
エントリポイント
レンダラーの管理
レンダラー
#garibenhttp://gariben.orgがりっち勉強会
DirectX の勉強方法
#garibenhttp://gariben.orgがりっち勉強会
DirectX11 はどこで勉強すべきか
DirectX10 以前
DirectX11 以降
SDK にチュートリアルが付属
一通りみればまあいい感じに学べるチュートリアル
チュートリアルなし
#garibenhttp://gariben.orgがりっち勉強会
Windows デベロッパーセンター
http://msdn.microsoft.com/ja-jp/windows/apps/br229519
チュートリアルらしいチュートリアルなし
入門記事らしい入門記事なし
#garibenhttp://gariben.orgがりっち勉強会
サンプルを読む
http://msdn.microsoft.com/library/windows/apps/hh465149.aspx
一応チュートリアル ( らしい ) 気合で読める
MarbleMaze
シューティングゲーム 3D
#garibenhttp://gariben.orgがりっち勉強会
がりらぼ
http://garicchi.hatenablog.jp
続くかわからないけどちょくちょく DirectX の入門記事を更新
#garibenhttp://gariben.orgがりっち勉強会
Garicchi’s GitHub
https://github.com/garicchi/DirectXSample
2D 描画ぐらいまでのサンプルをおいてます
#garibenhttp://gariben.orgがりっち勉強会
補助ライブラリ
#garibenhttp://gariben.orgがりっち勉強会
補助ライブラリ
DirectX は自由度が高い分ちょっとの処理でもかなりの命令を書く必要
2D 描画のリソース読み込み→ 40 行ぐらい
#garibenhttp://gariben.orgがりっち勉強会
ライブラリがあります
D3DX DXUT
DirectX10 以前までは主流だったライブラリ
開発終了
#garibenhttp://gariben.orgがりっち勉強会
開発終了
#garibenhttp://gariben.orgがりっち勉強会
DirectX も移行期なのかもしれない
えっ… . 開発終了おおすぎ… .!?
次のライブラリ
DirectXToolkit
#garibenhttp://gariben.orgがりっち勉強会
DirectXtoolkit
https://directxtk.codeplex.com/
サンプルもまあまあ豊富でよいです
#garibenhttp://gariben.orgがりっち勉強会
DirectXToolkit が提供するもの
うれしい点→ XNA に似てる!!
#garibenhttp://gariben.orgがりっち勉強会
3D モデルはCMO と SDKMesh をサポート
SDKMesh→古い形式なので使わない方が吉
CMO
VisualStudio がコンパイルで変換してくれる
有名どころは .fbx か .obj
http://masafumi.cocolog-nifty.com/masafumis_diary/2013/02/windows-storefb.html
.CMO
変換!!
#garibenhttp://gariben.orgがりっち勉強会
3D モデルがない?
#garibenhttp://gariben.orgがりっち勉強会
作る
無料でほぼ完ぺきな機能を使える
#garibenhttp://gariben.orgがりっち勉強会
手に入れる
http://tf3dm.com/3d-models/aircraft
配布サイト
#garibenhttp://gariben.orgがりっち勉強会
DirectX を勉強して Windows タブレットゲームプログラマになろう!!
アルパカ牧場みたいなクソゲーでもランキングに上がれる!!
そもそもストアのゲームカテゴリは変動が少ない
→企業参入がまだきていない→一攫千金 !!?
単純にゲームつくって売りたいなら Unity をしよう!
#garibenhttp://gariben.orgがりっち勉強会
ご清聴ありがとうございました!!@garicchi
←がりべんイメージキャラクター (案 )