纳金网
标题:
Unity Mesh ---Triangle(unity mesh 画三角形)
[打印本页]
作者:
狂风大尉
时间:
2015-5-31 20:04
标题:
Unity Mesh ---Triangle(unity mesh 画三角形)
实现之前先介绍2个基本概念:
VertexBuffer和IndexBuffer1)VertexBuffer 叫顶点缓存区,用来保存顶点信息哒;
2)IndexBuffer 叫索引缓存区,用来保存顶点对应的索引值哒;
思路:如何绘制三角形呢?
1)一个三角形有3个顶点吧,建立3个顶点数据缓存vector3类型数组里;
2)缓存这个三角形顶点的索引信息在int型数组;
3)new 一个空的mesh 或者 通过组建拿到MeshFilter对象里的mesh,把之前准备绘制三角形的基本数据顶点信息,索引信息等数据指向mesh里面相应属性。
PS:可以设置颜色,设置3个顶点的颜色,在update通过Graphics的DrawMesh方法显示颜色等信息。
创建MeshDrawTriangle.cs
Mesh m_Mesh;
Material m_Material;
//MeshFilter m_Filter;
void Awake(){
//m_Filter = gameObject.AddComponent<MeshFilter> ();
//m_Mesh = m_Filter.mesh;
m_Material = new Material(Shader.Find ("GUI/Text Shader"));
}
void Start () {
Vector3[] m_Vertexs = new Vector3[]{
new Vector3(0,0,0),
new Vector3(1,1,0),
new Vector3(-1,1,0)
};
int[] m_Tris = new int[]{0,1,2};
Color[] m_Colors = new Color[]{Color.green,Color.green,Color.green};
m_Mesh = new Mesh ();
m_Mesh.vertices = m_Vertexs;
m_Mesh.triangles = m_Tris;
m_Mesh.colors = m_Colors;
//m_Filter.mesh = m_Mesh;
}
// Update is called once per frame
void Update () {
Graphics.DrawMesh (m_Mesh,Vector3.zero,Quaternion.identity,m_Material,0);
}
复制代码
最后把cs文件挂相机或空GameObject运行即可。
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5