// // DepthStencilState.m // XNI // // Created by Matej Jan on 16.9.10. // Copyright 2010 Retronator. All rights reserved. // #import "DepthStencilState.h" #import "Retronator.Xni.Framework.h" #import "Retronator.Xni.Framework.Graphics.h" static DepthStencilState *defaultDepth; static DepthStencilState *depthRead; static DepthStencilState *none; @implementation DepthStencilState - (id) init { self = [super init]; if (self != nil) { counterClockwiseStencilDepthBufferFail = StencilOperationKeep; counterClockwiseStencilFail = StencilOperationKeep; counterClockwiseStencilFunction = CompareFunctionAlways; counterClockwiseStencilPass = StencilOperationKeep; depthBufferEnable = YES; depthBufferFunction = CompareFunctionLessEqual; depthBufferWriteEnable = YES; referenceStencil = 0; stencilDepthBufferFail = StencilOperationKeep; stencilFail = StencilOperationKeep; stencilFunction = CompareFunctionAlways; stencilMask = StencilOperationKeep; stencilPass = StencilOperationKeep; stencilWriteMask = INT32_MAX; twoSidedStencilMode = NO; } return self; } + (void) initialize { if (!defaultDepth) { defaultDepth = [[DepthStencilState alloc] init]; } if (!depthRead) { depthRead = [[DepthStencilState alloc] init]; depthRead.depthBufferWriteEnable = NO; } if (!none) { none = [[DepthStencilState alloc] init]; none.depthBufferEnable = NO; none.depthBufferWriteEnable = NO; } } @synthesize counterClockwiseStencilDepthBufferFail; @synthesize counterClockwiseStencilFail; @synthesize counterClockwiseStencilFunction; @synthesize counterClockwiseStencilPass; @synthesize depthBufferEnable; @synthesize depthBufferFunction; @synthesize depthBufferWriteEnable; @synthesize referenceStencil; @synthesize stencilDepthBufferFail; @synthesize stencilFail; @synthesize stencilFunction; @synthesize stencilMask; @synthesize stencilPass; @synthesize stencilWriteMask; @synthesize twoSidedStencilMode; + (DepthStencilState*) defaultDepth { return defaultDepth; } + (DepthStencilState*) depthRead { return depthRead; } + (DepthStencilState*) none { return none; } @end