ほら、怖くないdirect x11入門

76
#gariben http://gariben.org ががががががが がが がががが DirectX11 がが Ryota Togai @garicchi

Upload: ryota-togai

Post on 28-May-2015

11.892 views

Category:

Technology


6 download

DESCRIPTION

初心者向けのDirectX11入門スライドです。 WindowsStoreAppsにフォーカスしたゲーム開発についても書いています。 1/11の【第3回】がりっち勉強会in関西で登壇しました。

TRANSCRIPT

Page 1: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

ほら、怖くない DirectX11 入門

Ryota Togai @garicchi

Page 2: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

自己紹介

栂井 良太 Ryota Togai

@garicchi

Microsoft Student Partners

https://www.facebook.com/garicchi

がりっち勉強会主催 (2012 ~ )

http://garicchi.com

Page 3: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

いきなりですが

JR 電車の網棚の上にパソコン忘れました

現在捜索中…

スーツと

Page 4: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

ThinkPad X240 買いました

配送日→ 1/11

マルチタッチ、 FHD 、フロントリアバッテリーなどもりもり

Page 5: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

卒論初稿提出できました

年末 → 謎に Twitter クライアントつくる

年明け → 卒論の初稿提出日 (1/10) ががりべん (1/11) の前日と気づく

↑ ここまで卒論もがりべんも 1byte も進捗なし

ここ 1 週間 → 毎朝 5 時寝

Page 6: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

Neuronia

for Windows Store

Page 7: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

Agenda自己紹介What’DirectX11

DirectX の環境DirectX11 入門DirectX on WindowsStoreApps

DirectX の勉強方法DirectX プロジェクトの全体像

補助ライブラリのはなしおわり

Page 8: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

What’s DirectX11?

Page 9: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX とはWindows プラットフォームにおいて高度なグラフィック処理やゲーム開発の API 群

グラフィックボードやハードウエアと OS との互換性をたもつために開発された

最近は GPGPU などのためにも存在→GPU を使った高速演算処理

Page 10: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

Windows ゲームの標準技術に

Page 11: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX の歴史DirectX1.0

DirectX2.0

DirectX3.0

DirectX4.0

DirectX5.0

ゲーム開発用 GameSDK としてリリース

Direct3D の登場

DirectDraw DirectSound DirectPlay← ネットワーク

DirectSound3D 登場、 DirectInput の統合

DirectX3.0 からの変更点がわずかだったためにリリースされず

Wikipedia より

Page 12: ほら、怖くないDirect x11入門

#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 のサポート

Page 13: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

!?

Page 14: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

ManagedDirectX

.NetFramework から DirectX の機能を使えるようにするためのプラットフォーム

.Net の言語ならすべてサポートするが主に C# での利用が主

Page 15: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

ManagedDirectX

XNA に統合するためにわずかバージョン 2.0 で開発終了

Page 16: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

XNA

マイクロソフトによるコンピュータゲームデザイン、開発および管理を促進することを目的としたゲーム開発のためのツール

開発言語は C#

Page 17: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

XNA

2014 年 4 月に開発終了 ( あと 3 か月の命 )

Page 18: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

マイクロソフトはC# でゲームを作らせる気がない?

Page 19: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

Windows ゲームプラットフォーム

DirectX Unity XAML+C# JavaScript+Enchat.js

学習コスト

JavaScriptC#C#C++

Page 20: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

Unity とかいうべんりなもの

C# で書ける全プラットフォーム対応ゲームエンジン

3D モデルやワールドなどアセットストアが充実

Windows8 のゲームもつくれる!

Page 21: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX VS Unity

Directx Unity生産性 <

Directx Unity学習コストの低さ <

Directx Unity対応プラットフォーム <

Directx Unity自由度 >

Page 22: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

ツール化されたゲームエンジン

学習コストは低くて生産性も高いが自分の実力で作った感じがしない…

Page 23: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

あえていばらの道を行こうではないか

DirectX

Page 24: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX の環境

Page 25: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX11 の動作する OS

Windows Vista Windows 7 Windows 8 Windows 8.1

Windows XP

Page 26: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX の環境

VisualStudio2010 以前 DirectX SDK をダウンロードしてインストール

VisualStudio2012 以降 Windows8.1 に標準付属

Page 27: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

VisualStudio2010 以前

公式サイトから SDK をダウンロード

http://www.microsoft.com/ja-jp/directx/default.aspx

Page 28: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

VisualStudio2012 以降

WindowsSDK と DirectXSDK が統合

http://msdn.microsoft.com/ja-jp/windows/desktop/hh852363

Page 29: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

まとめ

これから DirectX する人はとりあえず VS2013 入れよう!

Page 30: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX11 入門

Page 31: ほら、怖くないDirect x11入門

#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

Page 32: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX の用語コンピュートシェーダ

レンダリング

スワップチェイン

グラフィック専用 CPU である GPU をグラフィック以外の演算にも使用することGPGPU の世界

描画データや描画ルールなどを実際の画素の集合にすることするもの→レンダラー

フロントバッファとバックバッファの切り替えをする機能

Page 33: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX の用語 2

シェーダー頂点シェーダーとピクセルシェーダーがある

頂点シェーダー

ポリゴンの頂点データの集まりを画面上の座標に合わせる

ラスタライズ頂点シェーダーの後、頂点集合をピクセル集合にする

ピクセルシェーダーラスタライズの後、ピクセル集合の色を決定する

Page 34: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX11 OnWindows Store Apps

Page 35: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

今日勉強すること

DirectX11

DeskTop App

Windows Store App

WindowsPhone

Page 36: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

ストアアプリの DirectX

高度なグラフィック処理を必要とするアプリ高度なグラフィック処理を必要としないアプリ

→C#+XAML

Page 37: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

画面モードDesk Top App

ウインドウモード

フルスクリーンモード

Windows Store App

フルスクリーンモード

基本的にフルスクリーンなので画面モードを気にする必要がない

Page 38: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

ということもなく…スナップ時でもゲームがプレイできる例

DirectX サンプル Marble Maze

解像度対応は必要ないといったな、あれは嘘だ

Page 39: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

スナップでゲームをする必要性艦〇レみたいなシミュレーションゲーム

わかる

高度なグラフィックを用いるゲーム

わからない

Page 40: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

スナップ時はゲームを止めよう

スナップ時にゲームが一時停止する例

DirectX3D シューティングゲームサンプル

Page 41: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

XAML との調和DirectX11.2 は XAML と DirectX の共存が可能

XAML コードビハインドが描画クラスを呼び出す

Page 42: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

XAML との調和で楽になること

ボタンとかを自分で作る必要がない

アプリバーをつけることができる

簡単なら 2D グラフィックなら XAML コントロールを用いることで簡単化

Page 43: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

入力を考える

今までの DirectX

マウス キーボード

ゲームパッド

NUI

これからの DirectX

タッチ 加速度センサー スタイラス?

Page 44: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

ここまでのまとめDirectX は Windows ストアアプリでめんどくさくなったり楽になったりする部分がいろいろある

画像拝借元→ http://wakearikyoumi.up.n.seesaa.net/wakearikyoumi/image/130515170812339425.jpg?d=a1

Page 45: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX11 プログラミングの全体像

Page 46: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

XAML を使わない DirectX の場合

DirectX アプリケーションを選択

Page 47: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

コンパイル

3D ポリゴンが表示される

Page 48: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

ソリューションを見る重要なヤツ

DeviceResources.cpp

~ Renderer.cpp

[ プロジェクト名 ]Main.cpp

App.cpp

Page 49: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DeviceResourcesコンストラクタによってほぼすべてのクラスに渡されるDirectX の主要機能が入っている

DeviceContext には描画メソッドがはいってたりする

App.cpp によって生成される

Page 50: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX のインターフェース名

インターフェースを表す

3D であることを表す

DirectX11 であることを表す

長い… .

Page 51: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

~ Renderer.cpp

描画コンポーネント ( レンダラー )

描画するオブジェクトごとにまとめられ、リソース読み込み、更新、描画、リソース解放メソッドを持つ

Sample3DSceneRenderer→真ん中にあるデカいポリゴン

SampleFpsTextRenderer→右下にある FPS

Page 52: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

[ プロジェクト名 ]Main.cpp

複数のレンダラーを管理するクラス

Renderメソッドでレンダラーをまとめて描画

Updateメソッドでレンダラーをまとめて更新

Page 53: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

App.cppアプリケーションのエントリポイント

アプリのレジュームやサスペンドなどのイベントをうけとる

DeviceResource のインスタンス、[ プロジェクト名 ]Main のインスタンスを持つ

While ループ内で更新→描画を行う

Page 54: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

なぜ更新が先か?描画が先の場合

キャラ移動 &判定

ユーザーが入力

描画

_人人人人人人_> 突然の死 < ̄ Y^Y^Y^Y^Y ̄

Page 55: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

なぜ更新が先か?更新が先の場合

ユーザー入力

描画

キャラ移動&判定

_人人人人人人_> 生きる < ̄ Y^Y^Y^Y^Y ̄

Page 56: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

更新が先な理由

わずか 1 ループでもユーザー入力のうけつけを先に行わないと描画内容とのタイムラグが起きてしまう

クソゲー

Page 57: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX プロジェクトの構成

App.cpp

[ プロジェクト名 ]Main.cpp

Simple3DSceneRenderer.cpp

SimpleTextFpsRenderer.cpp

所有

所有

エントリポイント

レンダラーの管理

レンダラー

Page 58: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX の勉強方法

Page 59: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX11 はどこで勉強すべきか

DirectX10 以前

DirectX11 以降

SDK にチュートリアルが付属

一通りみればまあいい感じに学べるチュートリアル

チュートリアルなし

Page 60: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

Windows デベロッパーセンター

http://msdn.microsoft.com/ja-jp/windows/apps/br229519

チュートリアルらしいチュートリアルなし

入門記事らしい入門記事なし

Page 61: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

サンプルを読む

http://msdn.microsoft.com/library/windows/apps/hh465149.aspx

一応チュートリアル ( らしい ) 気合で読める

MarbleMaze

シューティングゲーム 3D

Page 62: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

がりらぼ

http://garicchi.hatenablog.jp

続くかわからないけどちょくちょく DirectX の入門記事を更新

Page 63: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

Garicchi’s GitHub

https://github.com/garicchi/DirectXSample

2D 描画ぐらいまでのサンプルをおいてます 

Page 64: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

補助ライブラリ

Page 65: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

補助ライブラリ

DirectX は自由度が高い分ちょっとの処理でもかなりの命令を書く必要

2D 描画のリソース読み込み→ 40 行ぐらい

Page 66: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

ライブラリがあります

D3DX DXUT

DirectX10 以前までは主流だったライブラリ

開発終了

Page 67: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

開発終了

Page 68: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX も移行期なのかもしれない

えっ… . 開発終了おおすぎ… .!?

次のライブラリ

DirectXToolkit

Page 69: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectXtoolkit

https://directxtk.codeplex.com/

サンプルもまあまあ豊富でよいです

Page 70: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectXToolkit が提供するもの

うれしい点→ XNA に似てる!!

Page 71: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

3D モデルはCMO と SDKMesh をサポート

SDKMesh→古い形式なので使わない方が吉

CMO

VisualStudio がコンパイルで変換してくれる

有名どころは .fbx か .obj

http://masafumi.cocolog-nifty.com/masafumis_diary/2013/02/windows-storefb.html

.CMO

変換!!

Page 72: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

3D モデルがない?

Page 73: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

作る

無料でほぼ完ぺきな機能を使える

Page 74: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

手に入れる

http://tf3dm.com/3d-models/aircraft

配布サイト

Page 75: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

DirectX を勉強して Windows タブレットゲームプログラマになろう!!

アルパカ牧場みたいなクソゲーでもランキングに上がれる!!

そもそもストアのゲームカテゴリは変動が少ない

→企業参入がまだきていない→一攫千金 !!?

単純にゲームつくって売りたいなら Unity をしよう!

Page 76: ほら、怖くないDirect x11入門

#garibenhttp://gariben.orgがりっち勉強会

ご清聴ありがとうございました!!@garicchi

←がりべんイメージキャラクター (案 )