码迷,mamicode.com
首页 > 其他好文 > 详细

Graphics.DrawMeshInstanced

时间:2017-10-25 19:51:03      阅读:627      评论:0      收藏:0      [点我收藏+]

标签:技术   mirror   遇到   tran   cin   index   update   border   material   

Draw the same mesh multiple times using GPU instancing.
可以免去创建和管理gameObj的开销
并不是立即绘制,如需:Graphics.DrawMeshNow
每帧调用一次,当帧发送绘制请求
Meshes are not further culled by the view frustum or baked occluders, nor sorted for transparency or z efficiency.
You can only draw a maximum of 1023 instances at once
SE 3.0 以上支持
材质要勾上 enableInstancing  总的检查:material.enableInstancing && SystemInfo.supportsInstancing 

过程中遇到的问题:
导入mesh,的Use File Scale 勾上就不显示??? 模型的缩放调整有问题,去掉后原本的模型直接放显得特别大
技术分享
感觉像是这个函数强行用了一次file scale,再用会变得更小(函数自身*导入参数)
去掉设置,这个函数的变正常,但直接拖到游戏就不对,应该是个bug

public class GpuInstancingTest : MonoBehaviour {
	public Mesh mesh;
	public Material material;
	
	List<Matrix4x4> matrices = new List<Matrix4x4>();

	void Start()
	{
		if (!material.enableInstancing || !SystemInfo.supportsInstancing)
		{
			enabled = false;
			return;
		}

		for (int i = 0; i < 10; ++i)
		{
			Matrix4x4 mt = Matrix4x4.TRS(transform.position + (i * 1.1f) * Vector3.up, transform.rotation, Vector3.one);
			matrices.Add(mt);
		}
	}

	// Update is called once per frame
	void Update () {
		Graphics.DrawMeshInstanced(mesh, 0, material, matrices);
	}
}
x
26
1
public class GpuInstancingTest : MonoBehaviour {
2
    public Mesh mesh;
3
    public Material material;
4
    
5
    List<Matrix4x4> matrices = new List<Matrix4x4>();
6
7
    void Start()
8
    {
9
        if (!material.enableInstancing || !SystemInfo.supportsInstancing)
10
        {
11
            enabled = false;
12
            return;
13
        }
14
15
        for (int i = 0; i < 10; ++i)
16
        {
17
            Matrix4x4 mt = Matrix4x4.TRS(transform.position + (i * 1.1f) * Vector3.up, transform.rotation, Vector3.one);
18
            matrices.Add(mt);
19
        }
20
    }
21
22
    // Update is called once per frame
23
    void Update () {
24
        Graphics.DrawMeshInstanced(mesh, 0, material, matrices);
25
    }
26
}








Graphics.DrawMeshInstanced

标签:技术   mirror   遇到   tran   cin   index   update   border   material   

原文地址:http://www.cnblogs.com/Hichy/p/7730353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!