Home | Lesson | Game | Tool | Link

3.色の追加

ポリゴンに色を追加します。
各頂点に色を設定することでカラフルなポリゴンに、同じ色で単色なポリゴンになります。
前回作成したプログラムを変更していきます。


三角形の設定
S3DVertexの頂点カラーを変更します。
各頂点に個別の色を設定していきます。
	//三角形作成
	u16 triList[] = {0,1,2};
	S3DVertex triVer[3];
	triVer[0] = S3DVertex( 0, 1,0,  0,0,0, 0xFFFF0000, 0,0);//上 :赤
	triVer[1] = S3DVertex( 1,-1,0,  0,0,0, 0xFF00FF00, 0,0);//右下:緑
	triVer[2] = S3DVertex(-1,-1,0,  0,0,0, 0xFF0000FF, 0,0);//左下:青
	mat.setTranslation(vector3df(-2,0,0));//左に2移動
	driver->setTransform (ETS_WORLD, mat);//ワールドに反映
	driver->drawIndexedTriangleList(&triVer[0], 3, &triList[0], 1);

四角形の設定
S3DVertexの頂点カラーを変更します。
各頂点を同じ色にするので、予め変数を用意しておきます。
	//四角形作成
	u16 rectList[] = {0,1,2, 1,3,2};
	S3DVertex rectVer[4];
	SColor color = 0xFFFFFF00;
	rectVer[0] = S3DVertex(-1, 1,0,  0,0,0, color, 0,0);//左上:黄
	rectVer[1] = S3DVertex( 1, 1,0,  0,0,0, color, 0,0);//右上:黄
	rectVer[2] = S3DVertex(-1,-1,0,  0,0,0, color, 0,0);//左下:黄
	rectVer[3] = S3DVertex( 1,-1,0,  0,0,0, color, 0,0);//右下:黄
	mat.setTranslation(vector3df(2,0,0));//右に2移動
	driver->setTransform (ETS_WORLD, mat);//ワールドに反映
	driver->drawIndexedTriangleList(&rectVer[0], 4, &rectList[0], 2);


頂点カラー

頂点カラーは0xAARRGGBBとなっています。値はそれぞれ0x00〜0xFFで指定します。
AA:アルファ要素
RR:赤の要素
GG:緑の要素
BB:青の要素
0x00が弱く、0xFFが強くなります。
赤緑青の3つを強くすると白に、3つを弱くすると黒になります。
青と赤を強くすると紫にもなります。光の三原色になっています。

ダウンロード
今回作成したファイル一式です。

宿題
1.三角形を緑一色で描画してみましょう。
2.四角形を黄色/水色/紫色/白色の4色で描画してみましょう。