# Direct3D integration

These functions are declared in the following header file:

~~~~c
 #include <allegro5/allegro_direct3d.h>
~~~~

## API: al_get_d3d_device

Returns the Direct3D device of the display. The return value is
undefined if the display was not created with the Direct3D flag.

*Returns:*
A pointer to the Direct3D device.

## API: al_get_d3d_system_texture

Returns the system texture (stored with the D3DPOOL_SYSTEMMEM flags). This
texture is used for the render-to-texture feature set.

*Returns:*
A pointer to the Direct3D system texture.

## API: al_get_d3d_video_texture

Returns the video texture (stored with the D3DPOOL_DEFAULT or D3DPOOL_MANAGED
flags depending on whether render-to-texture is enabled or disabled
respectively).

*Returns:*
A pointer to the Direct3D video texture.

## API: al_have_d3d_non_pow2_texture_support

Returns whether the Direct3D device supports textures whose dimensions are not
powers of two.

*Returns:*
True if device supports NPOT textures, false otherwise.

## API: al_have_d3d_non_square_texture_support

Returns whether the Direct3D device supports textures that are not square.

*Returns:*
True if the Direct3D device supports non-square textures, false otherwise.

## API: al_get_d3d_texture_size

Retrieves the size of the Direct3D texture used for the bitmap.

Returns true on success, false on failure.
Zero width and height are returned if the bitmap is not a Direct3D bitmap.

Since: 5.1.0

See also: [al_get_d3d_texture_position]

## API: al_get_d3d_texture_position

Returns the u/v coordinates for the top/left corner of the bitmap within the
used texture, in pixels.

*Parameters:*

* bitmap - ALLEGRO_BITMAP to examine
* u - Will hold the returned u coordinate
* v - Will hold the returned v coordinate

See also: [al_get_d3d_texture_size]

## API: al_is_d3d_device_lost

Returns a boolean indicating whether or not the Direct3D device
belonging to the given display is in a lost state.

*Parameters:*

* display - The display that the device you wish to check is attached to

## API: al_set_d3d_device_release_callback

The callback will be called whenever a D3D device is reset (minimize, toggle
fullscreen window, etc).  In the callback you should release any d3d
resources you have created yourself.  The callback receives the affected
display as a parameter.

Pass NULL to disable the callback.

Since: 5.1.0

## API: al_set_d3d_device_restore_callback

The callback will be called whenever a D3D device that has been reset is
restored.  In the callback you should restore any d3d resources you have
created yourself.  The callback receives the affected display as a parameter.

Pass NULL to disable the callback.

Since: 5.1.0
