Defines the levels of full-scene multisampling that the device can apply.
typedef enum D3DMULTISAMPLE_TYPE { D3DMULTISAMPLE_NONE = 0, D3DMULTISAMPLE_NONMASKABLE = 1, D3DMULTISAMPLE_2_SAMPLES = 2, D3DMULTISAMPLE_3_SAMPLES = 3, D3DMULTISAMPLE_4_SAMPLES = 4, D3DMULTISAMPLE_5_SAMPLES = 5, D3DMULTISAMPLE_6_SAMPLES = 6, D3DMULTISAMPLE_7_SAMPLES = 7, D3DMULTISAMPLE_8_SAMPLES = 8, D3DMULTISAMPLE_9__SAMPLES = 9, D3DMULTISAMPLE_10_SAMPLES = 10, D3DMULTISAMPLE_11_SAMPLES = 11, D3DMULTISAMPLE_12_SAMPLES = 12, D3DMULTISAMPLE_13_SAMPLES = 13, D3DMULTISAMPLE_14_SAMPLES = 14, D3DMULTISAMPLE_15_SAMPLES = 15, D3DMULTISAMPLE_16_SAMPLES = 16, D3DMULTISAMPLE_FORCE_DWORD = 0xffffffff, } D3DMULTISAMPLE_TYPE, *LPD3DMULTISAMPLE_TYPE;
In addition to enabling full-scene multisampling at IDirect3DDevice9::Reset time, there will be render states that turn various aspects on and off at fine-grained levels.
Multisampling is valid only on a swap chain that is being created or reset with the D3DSWAPEFFECT_DISCARD swap effect.
The multisample antialiasing value can be set with the parameters (or sub-parameters) in the following methods.
Method | Parameters | Sub-parameters |
---|---|---|
IDirect3D9::CheckDeviceMultiSampleType | MultiSampleType and pQualityLevels | |
IDirect3D9::CreateDevice | pPresentationParameters | MultiSampleType and pQualityLevels |
IDirect3DDevice9::CreateAdditionalSwapChain | pPresentationParameters | MultiSampleType and pQualityLevels |
IDirect3DDevice9::CreateDepthStencilSurface | MultiSampleType and pQualityLevels | |
IDirect3DDevice9::CreateRenderTarget | MultiSampleType and pQualityLevels | |
IDirect3DDevice9::Reset | pPresentationParameters | MultiSampleType and pQualityLevels |
It is not good practice to switch from one multisample type to another to raise the quality of the antialiasing.
D3DMULTISAMPLE_NONE enables swap effects other than discarding, locking, and do on.
Whether the display device supports maskable multisampling (more than one sample for a multiple-sample render-target format plus antialias support) or just non-maskable multisampling (only antialias support), the driver for the device provides the number of quality levels for the D3DMULTISAMPLE_NONMASKABLE multiple-sample type. Applications that just use multisampling for antialiasing purposes only need to query for the number of non-maskable multiple-sample quality levels that the driver supports.
The quality levels supported by the device can be obtained with the pQualityLevels parameter of IDirect3D9::CheckDeviceMultiSampleType. Quality levels used by the application are set with the MultiSampleQuality parameter of IDirect3DDevice9::CreateDepthStencilSurface and IDirect3DDevice9::CreateRenderTarget.
See D3DRS_MULTISAMPLEMASK for discussion of maskable multisampling.