public DefaultRenderRequest(
IRenderContext renderContext,
RasterizerState rasterizerState,
BlendState blendState,
DepthStencilState depthStencilState,
IEffect effect,
string techniqueName,
IEffectParameterSet effectParameterSet,
VertexBuffer meshVertexBuffer,
IndexBuffer meshIndexBuffer,
PrimitiveType primitiveType,
Matrix[] instances,
Action<List<Matrix>, VertexBuffer, IndexBuffer> computeCombinedBuffers)
{
#if DEBUG
GraphicsMetricsProfilerVisualiser.RenderRequestsCreated++;
#endif
RasterizerState = rasterizerState;
BlendState = blendState;
DepthStencilState = depthStencilState;
Effect = effect;
TechniqueName = techniqueName;
EffectParameterSet = effectParameterSet;
MeshVertexBuffer = meshVertexBuffer;
MeshIndexBuffer = meshIndexBuffer;
PrimitiveType = primitiveType;
Instances = instances;
_computeCombinedBuffers = computeCombinedBuffers;
// Now that the parameter set has been used in a request, prevent it
// from being changed.
EffectParameterSet.Lock(renderContext);
StateHash =
RasterizerState.GetHashCode() ^ 397 +
BlendState.GetHashCode() ^ 397 +
DepthStencilState.GetHashCode() ^ 397 +
Effect.GetHashCode() ^ 397 +
TechniqueName.GetHashCode() ^ 397 +
EffectParameterSet.GetStateHash() ^ 397 +
MeshVertexBuffer.GetHashCode() ^ 397 +
MeshIndexBuffer.GetHashCode() ^ 397 +
PrimitiveType.GetHashCode() ^ 397;
}