绘制六面体
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();
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();
相关文章推荐
- OpenGL: 显示列表绘制六面体
- Three.js的绘制流程(三)----地形
- AdapterView的复用机制及ListView绘制的整体流程
- Android性能优化课程:过度绘制
- SLAM - 利用Qt绘制灰度地图
- IRubberBand接口(橡皮条绘制点、线、面)
- R-D Curve绘制方法
- ArcGIS for Android 临时图层绘制文字 汉字不显示问题
- SVG 绘制流程图相关Web插件
- OpenGL ES 02 – 绘制图元 2 - 矩形
- 【OpenGL】理解GL_TRIANGLE_STRIP等绘制三角形序列的三种方式
- 用PNChart绘制饼状图简介
- 图文演示绘制思维导图,分析流程图怎么画小技巧
- [全程建模]UML泳道图的绘制问题
- php绘制一条直线的方法
- 怎样在ZBrush中快速绘制人体躯干
- Android 绘制流程分析与自定义控件
- 使用php类图绘制工具——phuml构建项目的类图
- android中canvas.drawText参数的介绍以及绘制一个文本居中的案例
- css让图片显示圆角 纯CSS绘制漂亮的圆形图案效果