# GetNativeTexturePtr()

> Retrieve a native (underlying graphics API) pointer to the Texture resource.

## Definition

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

```csharp
public IntPtr GetNativeTexturePtr()
```

### Returns

| Type                                                           | Description                                             |
| -------------------------------------------------------------- | ------------------------------------------------------- |
| [IntPtr](https://learn.microsoft.com/dotnet/api/system.intptr) | Pointer to an underlying graphics API Texture resource. |

### Remarks

Use this function to retrieve a pointer/handle corresponding to a particular Texture as it is represented on the native graphics API level. This can be used to enable Texture manipulation from [native code plugins](/engine/6000.0/manual/scripting/compilation-and-code-reload/plug-ins/native-plugin-interface.md).

Note: When you use the Unity APIs to modify the pixel data of a Texture object, it changes the underlying graphics API native pointer. Call GetNativeTexturePtr to get the new native pointer.

For specific platforms, Unity has the following specifications:

* On Direct3D-like devices, Unity returns a pointer to the base Texture type (`ID3D11Resource` on D3D11, `ID3D12Resource` on D3D12).
* On OpenGL-like devices, the GL Texture "name" is returned; cast the pointer to an integer type to get it.
* On Metal, Unity returns an `id<MTLTexture>` pointer.
* On Vulkan, Unity returns an `VkImage` pointer.
* On platforms that do not support native code plug-ins, this function always returns NULL.

Note that calling this function when using multi-threaded rendering will synchronize with the rendering thread (a slow operation), so best practice is to set up needed Texture pointers only at initialization time.

Additional Resources: [Native code plugins](/engine/6000.0/manual/scripting/compilation-and-code-reload/plug-ins/native-plugin-interface.md), [Texture2D.CreateExternalTexture](/engine/6000.0/script-reference/unityengine/texture2d/createexternaltexture.md), [Cubemap.CreateExternalTexture](/engine/6000.0/script-reference/unityengine/cubemap/createexternaltexture.md), [RenderTexture.GetNativeDepthBufferPtr](/engine/6000.0/script-reference/unityengine/rendertexture/getnativedepthbufferptr.md).
