Nanashi-softプログラマ専用DirectX11開発


◇DirectX11プログラミング -色を付けてみる-

ポリゴンに色を付けてみます

背景の色は,最初のクリア部分で指定しています
		//青のパレット生成
float ClearColor[] = {0.0f, 0.0f, 1.0f, 1.0f};
//描画
hpDeviceContext->ClearRenderTargetView(hpRenderTargetView, ClearColor);
この ClearColorは,
float ClearColor[] = {「赤」,「緑」,「青」, 1.0f};
です
4番目のは,今は使わないので定数だと思っておいて下さい(今は触っても変化しません)

色の濃さは 0.0(暗い)~1.0(明るい)で記述します
よくあるRGBパレットの数値とは違うので注意して下さい

それで,ポリゴンに色を付けるのは,頂点カラーというのを定義します
この三角は何色と指定するのではなく,この頂点は何色と指定するのです

その仕組みは既に入っています
	//ポリゴン頂点構造体
struct Vertex3D {
float pos[3]; //x-y-z
float col[4]; //r-g-b-a
};
この colがカラー指定の為の配列です
コメント通り,赤,緑,青(αは今は機能しません)の順で指定します
	//頂点データ(六角ポリゴン1枚)
Vertex3D hVectorData[TYOUTEN] = {
{ { +0.0f, +0.8f, +0.5f }, { 0.0f, 1.0f, 1.0f, 1.0f } },
{ { +0.5f, +0.4f, +0.5f }, { 0.0f, 1.0f, 1.0f, 1.0f } },
{ { -0.5f, +0.4f, +0.5f }, { 0.0f, 1.0f, 1.0f, 1.0f } },
{ { +0.5f, -0.4f, +0.5f }, { 0.0f, 1.0f, 1.0f, 1.0f } },
{ { -0.5f, -0.4f, +0.5f }, { 0.0f, 1.0f, 1.0f, 1.0f } },
{ { +0.0f, -0.8f, +0.5f }, { 0.0f, 1.0f, 1.0f, 1.0f } }
};
このように赤を出力しないようにすると,シアン(水色風)になります


また,頂点の間の色は徐々にグラデーションしますので,
	Vertex3D hVectorData[TYOUTEN] = {
{ { +0.0f, +0.8f, +0.5f }, { 0.0f, 0.0f, 0.0f, 1.0f } },
{ { +0.5f, +0.4f, +0.5f }, { 0.0f, 0.0f, 1.0f, 1.0f } },
{ { -0.5f, +0.4f, +0.5f }, { 0.0f, 1.0f, 0.0f, 1.0f } },
{ { +0.5f, -0.4f, +0.5f }, { 0.0f, 1.0f, 1.0f, 1.0f } },
{ { -0.5f, -0.4f, +0.5f }, { 1.0f, 0.0f, 0.0f, 1.0f } },
{ { +0.0f, -0.8f, +0.5f }, { 1.0f, 0.0f, 1.0f, 1.0f } }
};
こんな風に色々な色を指定するとカラフルになります



TOPプログラマ専用DirectX11開発