D3DPRESENT

Describes the relationship between the adapter refresh rate and the rate at which IDirect3DDevice9::Present or IDirect3DSwapChain9::Present operations are completed. These values also serve as flag values for the PresentationIntervals field of D3DCAPS9.

#define Description
D3DPRESENT_DONOTWAIT A presentation cannot be scheduled by a hal device. If this flag is set in a call to IDirect3DSwapChain9::Present, and the hardware is busy processing or waiting for a vertical sync interval, then Present will return D3DERR_WASSTILLDRAWING to indicate that the blit operation is incomplete.
D3DPRESENT_INTERVAL_DEFAULT This is nearly equivalent to D3DPRESENT_INTERVAL_ONE. See remarks.
D3DPRESENT_INTERVAL_ONE The driver will wait for the vertical retrace period (the runtime will "beam follow" to prevent tearing). IDirect3DDevice9::Present operations will not be affected more frequently than the screen refresh; the runtime will complete at most one Present operation per adapter refresh period. This is equivalent to using D3DSWAPEFFECT_COPYVSYNC in DirectX 8.1. This option is always available for both windowed and full-screen swap chains. See remarks.
D3DPRESENT_INTERVAL_TWO The driver will wait for the vertical retrace period. IDirect3DDevice9::Present operations will not be affected more frequently than every second screen refresh. Check the PresentationIntervals cap (see D3DCAPS9) to see if D3DPRESENT_INTERVAL_TWO is supported by the driver.
D3DPRESENT_INTERVAL_THREE The driver will wait for the vertical retrace period. IDirect3DDevice9::Present operations will not be affected more frequently than every third screen refresh. Check the PresentationIntervals cap (see D3DCAPS9) to see if D3DPRESENT_INTERVAL_THREE is supported by the driver.
D3DPRESENT_INTERVAL_FOUR The driver will wait for the vertical retrace period. IDirect3DDevice9::Present operations will not be affected more frequently than every fourth screen refresh. Check the PresentationIntervals member (see D3DCAPS9) to see if D3DPRESENT_INTERVAL_FOUR is supported by the driver.
D3DPRESENT_INTERVAL_IMMEDIATE The runtime updates the window client area immediately and might do so more than once during the adapter refresh period. This is equivalent to using D3DSWAPEFFECT_COPY in DirectX 8. IDirect3DDevice9::Present operations might be affected immediately. This option is always available for both windowed and full-screen swap chains. See remarks.
D3DPRESENT_LINEAR_CONTENT The content of the back buffer to be presented is in the linear color space.
  • The presentation will implicitly convert from linear space to sRGB (gamma = 2.2). This is the only conversion that is supported.
  • Because this flag represents a property of the content of the back buffer, the flag can be specified during an IDirect3DSwapChain9::Present call. In other words, an application can present linear content in one frame, and then switch to corrected content in the next.
  • This flag is ignored when the swap chain is full screen. (Note that this flag is available only on the explicit swap chain version of IDirect3DSwapChain9::Present. The IDirect3DDevice9::Present method does not take a flags parameter.)
  • This flag is always accepted, but will only take effect when the driver exposes >D3DCAPS3_LINEAR_TO_SRGB_PresentATION.
  • The only back buffer format supported is X8R8G8B8.
See Windowed Swap Chains.

Remarks

Windowed mode supports D3DPRESENT_INTERVAL_DEFAULT, D3DPRESENT_INTERVAL_IMMEDIATE, and D3DPRESENT_INTERVAL_ONE. D3DPRESENT_INTERVAL_DEFAULT and the D3DPRESENT_INTERVAL_ONE are nearly equivalent (see the information regarding timer resolution below). They perform similarly to COPY_VSYNC in that there is only one present per frame, and they prevent tearing with beam-following. In contrast, D3DPRESENT_INTERVAL_IMMEDIATE will attempt to provide an unlimited presentation rate.

Full-screen mode supports similar usage as windowed mode by supporting D3DPRESENT_INTERVAL_IMMEDIATE regardless of the refresh rate or swap effect. D3DPRESENT_INTERVAL_DEFAULT uses the default system timer resolution whereas the D3DPRESENT_INTERVAL_ONE calls timeBeginPeriod to enhance system timer resolution. This improves the quality of vertical sync, but consumes slightly more processing time. Both parameters attempt to synchronize vertically.

Constant Information

Header d3d9.h
Minimum operating system Windows 98