Click or drag to resize
AB4D logo

ContexStatesManager Class

ContexStatesManager is a helper class that is used to set the current BlendStates, DepthStencilStates, RasterizerState and SamplerStates. Before each state change it checks if the state already has the new state value and in this case prevents the actual DirectX state change call to improve performance. ContexStatesManager also collect state changes statistics.
Inheritance Hierarchy
SystemObject
  Ab3d.DirectXDXResourceBase
    Ab3d.DirectXDisposableDXResource
      Ab3d.DirectXContexStatesManager

Namespace:  Ab3d.DirectX
Assembly:  Ab3d.DXEngine (in Ab3d.DXEngine.dll) Version: 2.1.6262.1040
Syntax
C#
public class ContexStatesManager : DisposableDXResource

The ContexStatesManager type exposes the following members.

Properties
  NameDescription
Public propertyBlendState
Gets or sets the current BlendState
Public propertyConstantBufferChangesCount
Gets number of times constant buffer is changed after last call to ResetChangesCount.
Public propertyDepthStencilState
Gets or sets the current DepthStencilState
Public propertyGeometryShader
Gets or sets the current GeometryShader
Public propertyIndexBuffersChangesCount
Gets number of times index buffer is changed after last call to ResetChangesCount.
Public propertyInputLayout
Gets or sets the current InputLayout
Public propertyIsBlendStateLocked
If set to true than the current BlendState cannot be changed until IsBlendStateLocked is set to false.
Public propertyIsDepthStencilStateLocked
If set to true than the current DepthStencilState cannot be changed until IsDepthStencilStateLocked is set to false.
Public propertyIsFrontCounterClockwise
Gets a boolean that is the same as the IsFrontCounterClockwise value in RasterizerState (this is an cached value and do not require a native GetDescription call on each getter call)
Public propertyIsRasterizerStateLocked
If set to true than the current RasterizerState cannot be changed until IsRasterizerStateLocked is set to false.
Public propertyIsSamplerStateLocked
If set to true than the current SamplerState cannot be changed until IsSamplerStateLocked is set to false.
Public propertyPixelShader
Gets or sets the current PixelShader
Public propertyPrimitiveTopology
Gets or sets the current PrimitiveTopology
Public propertyRasterizerState
Gets or sets the current RasterizerState
Public propertyShaderChangesCount
Gets number of times shader is changes after last call to ResetChangesCount.
Public propertyStateChangesCount
Gets number of state changes after last call to ResetChangesCount.
Public propertyVertexBuffersChangesCount
Gets number of times vertex buffer is changed after last call to ResetChangesCount.
Public propertyVertexShader
Gets or sets the current VertexShader
Top
Methods
  NameDescription
Public methodGetGeometryShaderConstantBuffer
Gets the constant buffer as Buffer for the specified slot in the geometry shader
Public methodGetPixelShaderConstantBuffer
Gets the constant buffer as Buffer for the specified slot in the pixel shader
Public methodGetPixelShaderResource
Gets the ShaderResourceView for the specified slot in the pixel shader
Public methodGetSamplerState
Gets the SamplerState for the specified slot
Public methodGetVertexShaderConstantBuffer
Gets the constant buffer as Buffer for the specified slot in the vertex shader
Public methodReset
Resets the cached resource states. This is usually called at the beginning of rendering a frame because we do not know if any state changes were set after the last frame was rendered. NOTE: This does not change any state on the GPU!
Public methodReset(ContexStatesManagerResetType)
Resets the specified cached resource states. This can be called if some state were not set by ContexStatesManager but were directly set by the application so the current values stored in ContexStatesManager are not valid any more. NOTE: This does not change any state on the GPU!
Public methodResetChangesCount
Resets the counter that counts how many state changes appeared in this ContexStatesManager
Public methodSetGeometryShader
Sets the geometry shader if it is different as previously set geometry shader. The same as setter for GeometryShader property but this method returns true if geometry shader was changed.
Public methodSetGeometryShaderConstantBuffer
Sets the constant buffer for the specified slot in the geometry shader
Public methodSetIndexBuffer
SetIndexBuffer sets the index buffer to the new index buffer if it is changed.
Public methodSetPixelShader
Sets the pixel shader if it is different as previously set pixel shader. The same as setter for PixelShader property but this method returns true if pixel shader was changed.
Public methodSetPixelShaderConstantBuffer
Sets the constant buffer for the specified slot in the pixel shader
Public methodSetPixelShaderResource
Sets the ShaderResourceView for the specified slot in the pixel shader
Public methodSetRasterizerState
It is possible to call this method to set rasterizer stat and also set the cached value of IsFrontCounterClockwise. This eliminates the need to call the native GetDescription call when IsFrontCounterClockwise check is needed.
Public methodSetSamplerState
Sets the SamplerState for the specified slot
Public methodSetVertexBuffer
Sets vertex buffer. Note that only slot 0 and 1 are cached (changed only when different vertex buffer is set), other slots are changed on every call to this method.
Public methodSetVertexShader
Sets the vertex shader if it is different as previously set vertex shader. The same as setter for VertexShader property but this method returns true if vertex shader was changed.
Public methodSetVertexShaderConstantBuffer
Sets the constant buffer for the specified slot in the vertex shader
Top
See Also