您的位置:首页 > 理论基础

绘制六面体

2014-12-19 11:09 435 查看
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Drawing;

usingMicrosoft.DirectX;
using
Microsoft.DirectX.Direct3D;
namespace
绘制基本几何体
{
class
DrawHexClass
{
public
Device device;
public
Vector3[] pointVectors;
public
CustomVertex.
PositionColored[] vertices;
private int[] indexData;
public
DrawHexClass(Device
_device, Vector3[] _pointVectors)
{
device = _device;
pointVectors=_pointVectors;
vertices =
new CustomVertex.PositionColored[8];
vertices[0].Position = pointVectors[0];
vertices[0].Color =
Color.Yellow. ToArgb();
vertices[1].Position = pointVectors[1];
vertices[1].Color =
Color.Red. ToArgb();
vertices[2].Position = pointVectors[2];
vertices[2].Color =
Color.Green.ToArgb();
vertices[3].Position = pointVectors[3];
vertices[3].Color =
Color.Gold.ToArgb();
vertices[4].Position = pointVectors[4];
vertices[4].Color =
Color.GhostWhite.ToArgb() ;
vertices[5].Position = pointVectors[5];
vertices[5].Color =
Color.LightPink.ToArgb();
vertices[6].Position = pointVectors[6];
vertices[6].Color =
Color.Maroon. ToArgb();
vertices[7].Position = pointVectors[7];
vertices[7].Color =
Color.Orange. ToArgb();
IndicesDeclaration();
//定义索引
}
private void
IndicesDeclaration() //定义索引
{
indexData=new int[36];
//顶部三角形
indexData[0] = 0; indexData[1] = 1; indexData[2] = 3;

indexData[3]
= 3; indexData[4] = 1; indexData[5] = 2;
//周围三角形
indexData[6] = 4; indexData[7] = 0; indexData[8] = 7;
indexData[9] = 7; indexData[10] = 0; indexData[11] = 3;
indexData[12] = 7; indexData[13] = 3; indexData[14] = 6;
indexData[15] = 6; indexData[16] = 3; indexData[17] = 2;
indexData[18] = 6; indexData[19] = 2; indexData[20] = 5;
indexData[21] = 5; indexData[22] = 2; indexData[23] = 1;
indexData[24] = 5; indexData[25] = 1; indexData[26] = 4;
indexData[27] = 4; indexData[28] = 1; indexData[29] = 0;
//底部三角形
indexData[30] = 5; indexData[31] = 4; indexData[32] = 7;
indexData[33] = 7; indexData[34] = 6; indexData[35] = 5;
}
public void
DrawHex()
{
device.DrawIndexedUserPrimitives(PrimitiveType.TriangleList, 0, 8, 12, indexData,
false, vertices);
}
}
}
在程序的渲染函数 Render()中代码“device. BeginScene(); ”和“ device.EndScene(); ”
之间添加如下代码:
Vector3[] points =new
Vector3[8] ;
points[0] =
new Vector3(30f, 20f, 0f);
points[1] =
new Vector3(30f, 20f, 10f);
points[2] =
new Vector3(40f, 20f, 10f);
points[3] =
new Vector3(40f, 20f, 0f);
points[4] =
new Vector3(30f, 10f, 0f);
points[5] =
new Vector3(30f, 10f, 10f);
points[6] =
new Vector3(40f, 10f, 10f);
points[7] =
new Vector3(40f, 10f, 0f);
DrawHexClass
drawTri = new
DrawHexClass(device, points);
drawTri.DrawHex();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息