| ?/TD> | 
| Microsoft DirectX 9.0 | 
Signals Microsoft?Direct3D?to begin recording a device-state block.
Syntax
HRESULT BeginStateBlock(VOID);
Return Value
If the method succeeds, the return value is D3D_OK.
If the method fails, the return value can be one of the following values.
D3DERR_INVALIDCALL The method call is invalid. For example, a method's parameter may have an invalid value. E_OUTOFMEMORY Direct3D could not allocate sufficient memory to complete the call. 
Remarks
Applications can ensure that all recorded states are valid by calling the IDirect3DDevice9::ValidateDevice method prior to calling this method.
The following methods can be recorded in a state block, after calling IDirect3DDevice9::BeginStateBlock and before IDirect3DDevice9::EndStateBlock.
- IDirect3DDevice9::LightEnable
 - IDirect3DDevice9::SetClipPlane
 - IDirect3DDevice9::SetIndices
 - IDirect3DDevice9::SetLight
 - IDirect3DDevice9::SetMaterial
 - IDirect3DDevice9::SetPixelShader
 - IDirect3DDevice9::SetPixelShaderConstantB
 - IDirect3DDevice9::SetPixelShaderConstantF
 - IDirect3DDevice9::SetPixelShaderConstantI
 - IDirect3DDevice9::SetRenderState
 - IDirect3DDevice9::SetStreamSource
 - IDirect3DDevice9::SetTexture
 - IDirect3DDevice9::SetTextureStageState
 - IDirect3DDevice9::SetTransform
 - IDirect3DDevice9::SetViewport
 - IDirect3DDevice9::SetVertexShader
 - IDirect3DDevice9::SetVertexShaderConstantB
 - IDirect3DDevice9::SetVertexShaderConstantF
 - IDirect3DDevice9::SetVertexShaderConstantI
 The ordering of state changes in a state block is not guaranteed. If the same state is specified multiple times in a state block, only the last value is used.
See Also
IDirect3DDevice9::EndStateBlock, IDirect3DDevice9::CreateStateBlock