はかせのラボ

私の頭の中を書いていく雑記ブログです

DirectX 三角形

TGSが終わり久しぶりにまったりできる日常が戻ってきました。
またDirectXの勉強を再開していきたいと思います。

前回まででシェーダーのコンパイルそして線を出すとこまで行きました。
今回は三角形を出してみようと思います。

三角形を出すこと自体はとても簡単でした。

まず最初に頂点数を3つにして

VERTEX vertex[] = 
{
        XMFLOAT3(-0.2f, 0.5f, 0.0f),
	XMFLOAT3(0.2f, 0.5f, 0.0f),
	XMFLOAT3(-0.0f, 0.3f, 0.0f)
};
//配列の要素数計算
mDrawNum = sizeof(vertex) / sizeof(vertex[0]); 

ラスタライザの設定して
(表示されるものはドットで表現したラスタ形式らしい)

//ラスタライザ設定
D3D11_RASTERIZER_DESC rd;
//塗りつぶし設定 SOLIDは塗りつぶし
rd.FillMode = D3D11_FILL_SOLID;
//描画面設定 今は両面描画
rd.CullMode = D3D11_CULL_NONE;
//表面設定 反時計回りすると表と認識 FALSEだと逆転する
rd.FrontCounterClockwise = TRUE;
mDevice->CreateRasterizerState(&rd, &mRasterizerState);

安心と信頼の渡された情報の解釈を変えて

mDeviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);

実行!
f:id:hakase0274:20180925203518p:plain

はい無事出ました。
ちなみにしれっと配列要素数計算して変数に格納してます。
これで毎回頂点数が変わるたびに確保する領域を手動で増減させる作業から
解放されましたw

次は立体のキューブを出してみようと思います。

今回作ったものはgithubに上げました。
https://github.com/hakase0724/DirectX/tree/PolygonTest