1
0
mirror of https://github.com/thes3m/XNI synced 2024-12-26 13:26:06 +01:00
2010-09-16 20:01:42 +00:00

104 lines
2.9 KiB
Objective-C

//
// SamplerState.m
// XNI
//
// Created by Matej Jan on 16.9.10.
// Copyright 2010 Retronator. All rights reserved.
//
#import "SamplerState.h"
#import "Retronator.Xni.Framework.h"
#import "Retronator.Xni.Framework.Graphics.h"
static SamplerState *anisotropicClamp;
static SamplerState *anisotropicWrap;
static SamplerState *linearClamp;
static SamplerState *linearWrap;
static SamplerState *pointClamp;
static SamplerState *pointWrap;
@implementation SamplerState
- (id) init
{
self = [super init];
if (self != nil) {
addressU = TextureAddressModeClamp;
addressV = TextureAddressModeClamp;
addressW = TextureAddressModeClamp;
filter = TextureFilterPoint;
maxAnisotropy = 0;
maxMipLevel = 0;
mipMapLevelOfDetailBias = 0;
}
return self;
}
+ (void) initialize {
if (!anisotropicClamp) {
anisotropicClamp = [[SamplerState alloc] init];
anisotropicClamp.filter = TextureFilterAnisotropic;
anisotropicClamp.addressU = TextureAddressModeClamp;
anisotropicClamp.addressV = TextureAddressModeClamp;
anisotropicClamp.addressW = TextureAddressModeClamp;
}
if (!anisotropicWrap) {
anisotropicWrap = [[SamplerState alloc] init];
anisotropicWrap.filter = TextureFilterAnisotropic;
anisotropicWrap.addressU = TextureAddressModeWrap;
anisotropicWrap.addressV = TextureAddressModeWrap;
anisotropicWrap.addressW = TextureAddressModeWrap;
}
if (!linearClamp) {
linearClamp = [[SamplerState alloc] init];
linearClamp.filter = TextureFilterLinear;
linearClamp.addressU = TextureAddressModeClamp;
linearClamp.addressV = TextureAddressModeClamp;
linearClamp.addressW = TextureAddressModeClamp;
}
if (!linearWrap) {
linearWrap = [[SamplerState alloc] init];
linearWrap.filter = TextureFilterLinear;
linearWrap.addressU = TextureAddressModeWrap;
linearWrap.addressV = TextureAddressModeWrap;
linearWrap.addressW = TextureAddressModeWrap;
}
if (!pointClamp) {
pointClamp = [[SamplerState alloc] init];
pointClamp.filter = TextureFilterPoint;
pointClamp.addressU = TextureAddressModeClamp;
pointClamp.addressV = TextureAddressModeClamp;
pointClamp.addressW = TextureAddressModeClamp;
}
if (!pointWrap) {
pointWrap = [[SamplerState alloc] init];
pointWrap.filter = TextureFilterPoint;
pointWrap.addressU = TextureAddressModeWrap;
pointWrap.addressV = TextureAddressModeWrap;
pointWrap.addressW = TextureAddressModeWrap;
}
}
@synthesize addressU;
@synthesize addressV;
@synthesize addressW;
@synthesize filter;
@synthesize maxAnisotropy;
@synthesize maxMipLevel;
@synthesize mipMapLevelOfDetailBias;
+ (SamplerState*) anisotropicClamp { return anisotropicClamp; }
+ (SamplerState*) anisotropicWrap { return anisotropicWrap; }
+ (SamplerState*) linearClamp { return linearClamp; }
+ (SamplerState*) linearWrap { return linearWrap; }
+ (SamplerState*) pointClamp { return pointClamp; }
+ (SamplerState*) pointWrap { return pointWrap; }
@end