Exemple #1
0
    private void ReleaseBuffer()
    {
        if (cameras != null)
        {
            for (int i = 0; i < cameras.Count; i++)
            {
                var camera = cameras[i];
                if (camera != null && command_buffer != null)
                {
                    camera.RemoveCommandBuffer(camera_event, command_buffer);
                }
            }
        }

        if (command_buffer != null)
        {
            command_buffer.Release();
        }
        if (buffer_manager != null)
        {
            buffer_manager.Release();
        }

        buffer_manager = null;
        command_buffer = null;

        Camera.onPreCull -= DrawWithCamera;
    }
Exemple #2
0
 private void OnEnable()
 {
     if (prefab_material == null || degraded_rectangles == null)
     {
         return;
     }
     ReleaseBuffer();
     bake_mesh                 = new Mesh();
     material                  = Instantiate(prefab_material);
     mesh_renderer             = GetComponent <SkinnedMeshRenderer>();
     mesh_vertices             = new List <Vector3>();
     command_buffer            = new CommandBuffer();
     buffer_manager            = new MaterialBufferManager(mesh_renderer.sharedMesh, degraded_rectangles.degraded_rectangles, material);
     degraded_rectangles_count = buffer_manager.GetLines().count;
     cameras             = new List <Camera>();
     Camera.onPreCull   += DrawWithCamera;
     command_buffer.name = "Cartoon Line";// 让描边同时在Scene视图和Game视图显示
 }