Unity GPU网格渲染模板

本文介绍了Unity中为提高性能采用GPU进行静态模型渲染的方法。通过挂载RenderingTag组件判断渲染需求,使用RenderingController全局管理并结合RenderingData处理模型网格数据,实现动态组合和切换,降低对建模软件的依赖。
摘要由CSDN通过智能技术生成

Unity GPU网格渲染模板

思路

由于性能原因,需要在将部分静态模型进行GPU绘制,以节省性能。
RenderingTag
挂载到需要渲染的物体上
判断当前是否需要渲染
渲染数据标记

RenderingController
全局单例,渲染管理

RenderingData
模型网格数据,以及分组的处理

代码实现

RenderingData

想要实现的就是自动将模型的网格进行拆分,再通过手动的方式进行整合。

/// <summary>
/// 网格及它对应的材质
/// </summary>
[System.Serializable]
public struct MeshInfo
{
   
    public Mesh mesh;
    public Material[] materials;
}

/// <summary>
/// 模型的整体信息
/// </summary>
[System.Serializable]
public struct ModelInfo
{
   
    public string name;
    public MeshInfo[] meshes;
}

/// <summary>
/// 渲染模型结构类型
/// </summary>
[System.Serializable]
public struct RenderingInfo
{
   
    public string name;
    public int modelIndex;
    public int[] meshIndexes;
    public Vector3 pos;
    public Vector3 angle;
    public List<Transform> targets;
}

public class RenderingData : MonoBehaviour
{
   
    private static RenderingData instance;
    public static RenderingData Instance {
    get {
    return instance; } }

    private void Awake()
    {
   
        instance = this;
    }

    public ModelInfo[] modelInfos;
    public RenderingInfo[] renderingInfos;

    public ModelInfo GetModelInfo(int index)
    {
   
        return modelInfos[index];
    }

    public RenderingInfo GetRenderingInfo(int index)
    {
   
        return renderingInfos[index];
    }

    public int GetRenderingNum()
    {
   
        return renderingInfos.Length;
    }

    public void AddRenderingInfoTarget(int index, Transform trans)
    {
   
        renderingInfos[index].target
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值