|
|
@@ -14,31 +14,31 @@ namespace CamelotEngine
|
|
|
SAFE_RELEASE(mSamplerState);
|
|
|
}
|
|
|
|
|
|
- void D3D11SamplerState::initialize(const SAMPLER_STATE_DESC& desc)
|
|
|
+ void D3D11SamplerState::initialize_internal()
|
|
|
{
|
|
|
D3D11_SAMPLER_DESC samplerState;
|
|
|
ZeroMemory(&samplerState, sizeof(D3D11_SAMPLER_DESC));
|
|
|
|
|
|
- samplerState.AddressU = D3D11Mappings::get(desc.addressMode.u);
|
|
|
- samplerState.AddressV = D3D11Mappings::get(desc.addressMode.v);
|
|
|
- samplerState.AddressW = D3D11Mappings::get(desc.addressMode.w);
|
|
|
- samplerState.BorderColor[0] = desc.borderColor[0];
|
|
|
- samplerState.BorderColor[1] = desc.borderColor[1];
|
|
|
- samplerState.BorderColor[2] = desc.borderColor[2];
|
|
|
- samplerState.BorderColor[3] = desc.borderColor[3];
|
|
|
- samplerState.ComparisonFunc = D3D11Mappings::get(desc.comparisonFunc);
|
|
|
- samplerState.MaxAnisotropy = desc.maxAniso;
|
|
|
- samplerState.MaxLOD = desc.mipMax;
|
|
|
- samplerState.MinLOD = desc.mipMin;
|
|
|
- samplerState.MipLODBias =desc.mipmapBias;
|
|
|
+ samplerState.AddressU = D3D11Mappings::get(mData.addressMode.u);
|
|
|
+ samplerState.AddressV = D3D11Mappings::get(mData.addressMode.v);
|
|
|
+ samplerState.AddressW = D3D11Mappings::get(mData.addressMode.w);
|
|
|
+ samplerState.BorderColor[0] = mData.borderColor[0];
|
|
|
+ samplerState.BorderColor[1] = mData.borderColor[1];
|
|
|
+ samplerState.BorderColor[2] = mData.borderColor[2];
|
|
|
+ samplerState.BorderColor[3] = mData.borderColor[3];
|
|
|
+ samplerState.ComparisonFunc = D3D11Mappings::get(mData.comparisonFunc);
|
|
|
+ samplerState.MaxAnisotropy = mData.maxAniso;
|
|
|
+ samplerState.MaxLOD = mData.mipMax;
|
|
|
+ samplerState.MinLOD = mData.mipMin;
|
|
|
+ samplerState.MipLODBias =mData.mipmapBias;
|
|
|
|
|
|
- bool isComparison = ((desc.minFilter & FO_USE_COMPARISON) & (desc.magFilter & FO_USE_COMPARISON) & (desc.mipFilter & FO_USE_COMPARISON)) != 0;
|
|
|
+ bool isComparison = ((mData.minFilter & FO_USE_COMPARISON) & (mData.magFilter & FO_USE_COMPARISON) & (mData.mipFilter & FO_USE_COMPARISON)) != 0;
|
|
|
|
|
|
- FilterOptions minFilter = (FilterOptions)(desc.minFilter & ~FO_USE_COMPARISON);
|
|
|
- FilterOptions magFilter = (FilterOptions)(desc.magFilter & ~FO_USE_COMPARISON);
|
|
|
- FilterOptions mipFilter = (FilterOptions)(desc.mipFilter & ~FO_USE_COMPARISON);
|
|
|
+ FilterOptions minFilter = (FilterOptions)(mData.minFilter & ~FO_USE_COMPARISON);
|
|
|
+ FilterOptions magFilter = (FilterOptions)(mData.magFilter & ~FO_USE_COMPARISON);
|
|
|
+ FilterOptions mipFilter = (FilterOptions)(mData.mipFilter & ~FO_USE_COMPARISON);
|
|
|
|
|
|
- if(minFilter == FO_ANISOTROPIC && desc.magFilter == FO_ANISOTROPIC && desc.mipFilter == FO_ANISOTROPIC)
|
|
|
+ if(minFilter == FO_ANISOTROPIC && mData.magFilter == FO_ANISOTROPIC && mData.mipFilter == FO_ANISOTROPIC)
|
|
|
{
|
|
|
samplerState.Filter = D3D11_FILTER_ANISOTROPIC;
|
|
|
}
|
|
|
@@ -96,5 +96,7 @@ namespace CamelotEngine
|
|
|
String errorDescription = device.getErrorDescription();
|
|
|
CM_EXCEPT(RenderingAPIException, "Cannot create sampler state.\nError Description:" + errorDescription);
|
|
|
}
|
|
|
+
|
|
|
+ SamplerState::initialize_internal();
|
|
|
}
|
|
|
}
|