DirectX
勉強会
第4回
内容
•
頂点バッファ
–
サンプルプログラム
:
V
ertexBuf
fer
.c
pp
•
入力
(DirectInput
につい
て
)
–
サンプルプログラム
:
Dinput.cpp
頂点バッファ
•
描画以前に用意しておく頂点リストのよう
なも
の
•
頂点が変化しない
オブジェクトを描画する
場
合に有効
頂点バッファの準備
•
LPDIRECT3DVER
TEXBUFFER
8
vb[6]
とすると、頂点バッファが6つできる
•
V
ertexBuf
fer
では、
PrepareVB()
とい
う関数を
作って、
vb[6]
に頂点
の情報を設定
している
•
アプリケーションの終了時に、頂点バッファを
開放する必要がある。
V
ert
exBuf
fer
では、
Rele
aseVB()
という関数
で行っている
頂点バッファを使った描画
•
SetStreamSou
rce()
使用する頂点バッファを指定する
–
第2引数
使用する頂点バッファへのポイン
タ
–
第3引数
使用する頂点バッファの大きさ
•
DrawPrimitive()
描画する
–
第1引数
ポリゴンの描画法
(D3DPT_TRIA
NGLEF
AN
等
)
–
第2引数
3角形ポリゴンの数
入力
•
入力を取得する方法には、いくつか種類が
ある
•
今回は、
DirectInput
を利用した方法
を説明する
–
マウス、キーボードなどの入力装置を統一的な方法で管
理できる
•
DirectInp
ut
を使う為に
–
プログラムに次の一行を加える
#include <dinput.h>
–
プロジェクト
->
プロ
パティ
->
リンカ
->
入力
->
追加の依存ファイル
に次を加える
dinput8.lib
DirectInput
の初期化
•
CreateDe
vice()
デバイスの取得
–
第1引数
入力デバイスの指定
•
GUID_SysKeyboard
:
キーボード
•
GUID_SysMouse
:
マウス
など
•
SetDataFo
rmat()
デバイスからのデータのフォーマット
を設定
–
第1引数
データ形式を記述する構造体へのポインタ
•
c_dfDIKeyboard
:
キーボー
ド用
(256
バイトの配列
)
•
c_dfDIMouse
:
マウス用
など
入力の取得
•
GetDeviceState()
デバイスの状態を取得する
–
第1引数
取得するデータサイズ
–
第2引数
データ格納先のポインタ
(キーボードの場合は、
256
バイトの配列)
キーボードからの入力
•
256
バイトの配列に、
0
番から
256
番までの
キーボード・
デバイス定数の状態が入っている
•
キーが押されると、
最上位ビットが1
になる
•
キー入力の判定の仕方
diKey
State
:
キー入力を受け取る
256
バイトの配列
if (diKey
State[DIK_RET
URN] & 0x80) {
リターンキーが押されている
}
キーボード・デバイス定数
DIK_SP
ACE
スペースキー
DIK_A
~
DIK_Z
A
から
Z
まで
DIK_0
~
DIK_9
メインキーボードの1から9まで
DIK_RETURN
リターンキー
•
上記以外にもある
<参考>
http://www
.geocitie
s.jp/toru_web
site/di/list
1.html
サンプルプログラム
Dinput.cpp
•
入力
–
a
–
b
–
c
–
d
–
q
参考
•
土井淳
大澤文孝
成田拓郎
著
DirectX8
実践プログラミング
工学社
2003
•
登大遊
著
DirectX8.0
3D
アクションゲーム・プログラミング
工学社
2002
•
http:/
/www
.g
eocit
ies.j
p/toru
_webs
ite/in
dex
.html
T
oru
の
DirectX
プログラミング講座