# PushMatrix()

> Saves the model, view and projection matrices to the top of the matrix stack.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.7/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public static void PushMatrix()
```

### Remarks

Changing the model, view or projection matrices overrides the current rendering matrices. It is good practice to save and restore these matrices using [GL.PushMatrix](/engine/6000.7/script-reference/unityengine/gl/pushmatrix.md) and [GL.PopMatrix](/engine/6000.7/script-reference/unityengine/gl/popmatrix.md).

Additional Resources: [GL.PopMatrix](/engine/6000.7/script-reference/unityengine/gl/popmatrix.md) function.

### Examples

```csharp
using UnityEngine;

public class Example : MonoBehaviour
{
    // Draw a yellow line from the botton left to the
    // top right of the screen
    Material mat;

    void OnPostRender()
    {
        if (!mat)
        {
            Debug.LogError("Please Assign a material on the inspector");
            return;
        }
        GL.PushMatrix(); // Save the current state
        mat.SetPass(0);
        GL.LoadPixelMatrix();
        GL.Color(Color.yellow);
        GL.Begin(GL.LINES);
        GL.Vertex3(0, 0, 0);
        GL.Vertex3(Screen.width, Screen.height, 0);
        GL.End();
        GL.PopMatrix(); // Pop changes.
    }
}
```
