# TexCoord3(float, float, float)

> Sets current texture coordinate (x,y,z) for all texture units.

## Definition

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

```csharp
public static void TexCoord3(float x, float y, float z)
```

### Parameters

**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): **** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): **** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)):&#x20;

### Remarks

In OpenGL this matches `glMultiTexCoord` for all texture units or `glTexCoord` when no multi-texturing is available. On other graphics APIs the same functionality is emulated.

The Z component is used only when:

**1.** You access a cubemap (which you access with a vector coordinate, hence x,y & z).

**2.** You do "projective texturing", where the X & Y coordinates are divided by Z to get the final coordinate. This would be mostly useful for water reflections and similar things.

This function can only be called between [GL.Begin](/engine/6000.7/script-reference/unityengine/gl/begin.md) and [GL.End](/engine/6000.7/script-reference/unityengine/gl/end.md) functions.

### Examples

```csharp
using UnityEngine;

public class Example : MonoBehaviour
{
    // Draws a Quad in the middle of the screen and
    // Adds the material's Texture to it.

    Material mat;
    void OnPostRender()
    {
        if (!mat)
        {
            Debug.LogError("Please Assign a material on the inspector");
            return;
        }
        GL.PushMatrix();
        mat.SetPass(1);
        GL.LoadOrtho();
        GL.Begin(GL.QUADS);
        GL.TexCoord3(0, 0, 0);
        GL.Vertex3(0.25f, 0.25f, 0);
        GL.TexCoord3(0, 1, 0);
        GL.Vertex3(0.25f, 0.75f, 0);
        GL.TexCoord3(1, 1, 0);
        GL.Vertex3(0.75f, 0.75f, 0);
        GL.TexCoord3(1, 0, 0);
        GL.Vertex3(0.75f, 0.25f, 0);
        GL.End();
        GL.PopMatrix();
    }
}
```
