ほら、怖くないdirect x11入門

Post on 28-May-2015

11.892 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

#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

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

top related