Convert(Min/Max)Lod now takes into account the lod offset so that it always…

Convert(Min/Max)Lod now takes into account the lod offset so that it always falls within the min and max. TRAC #13332 Signed-off-by: Jamie Madill Signed-off-by: Shannon Woods Author: Geoff Lang git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1968 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent a3ac01c8
...@@ -386,8 +386,8 @@ ID3D11SamplerState *RenderStateCache::getSamplerState(const gl::SamplerState &sa ...@@ -386,8 +386,8 @@ ID3D11SamplerState *RenderStateCache::getSamplerState(const gl::SamplerState &sa
samplerDesc.BorderColor[1] = 0.0f; samplerDesc.BorderColor[1] = 0.0f;
samplerDesc.BorderColor[2] = 0.0f; samplerDesc.BorderColor[2] = 0.0f;
samplerDesc.BorderColor[3] = 0.0f; samplerDesc.BorderColor[3] = 0.0f;
samplerDesc.MinLOD = gl_d3d11::ConvertMinLOD(samplerState.minFilter); samplerDesc.MinLOD = gl_d3d11::ConvertMinLOD(samplerState.minFilter, samplerState.lodOffset);
samplerDesc.MaxLOD = gl_d3d11::ConvertMaxLOD(samplerState.minFilter); samplerDesc.MaxLOD = gl_d3d11::ConvertMaxLOD(samplerState.minFilter, samplerState.lodOffset);
ID3D11SamplerState *dx11SamplerState = NULL; ID3D11SamplerState *dx11SamplerState = NULL;
HRESULT result = mDevice->CreateSamplerState(&samplerDesc, &dx11SamplerState); HRESULT result = mDevice->CreateSamplerState(&samplerDesc, &dx11SamplerState);
......
...@@ -196,14 +196,14 @@ D3D11_TEXTURE_ADDRESS_MODE ConvertTextureWrap(GLenum wrap) ...@@ -196,14 +196,14 @@ D3D11_TEXTURE_ADDRESS_MODE ConvertTextureWrap(GLenum wrap)
return D3D11_TEXTURE_ADDRESS_WRAP; return D3D11_TEXTURE_ADDRESS_WRAP;
} }
FLOAT ConvertMinLOD(GLenum minFilter) FLOAT ConvertMinLOD(GLenum minFilter, unsigned int lodOffset)
{ {
return (minFilter == GL_NEAREST || minFilter == GL_LINEAR) ? 0.0f : -FLT_MAX; return (minFilter == GL_NEAREST || minFilter == GL_LINEAR) ? static_cast<float>(lodOffset) : -FLT_MAX;
} }
FLOAT ConvertMaxLOD(GLenum minFilter) FLOAT ConvertMaxLOD(GLenum minFilter, unsigned int lodOffset)
{ {
return (minFilter == GL_NEAREST || minFilter == GL_LINEAR) ? 0.0f : FLT_MAX; return (minFilter == GL_NEAREST || minFilter == GL_LINEAR) ? static_cast<float>(lodOffset) : FLT_MAX;
} }
} }
......
...@@ -28,8 +28,8 @@ D3D11_STENCIL_OP ConvertStencilOp(GLenum stencilOp); ...@@ -28,8 +28,8 @@ D3D11_STENCIL_OP ConvertStencilOp(GLenum stencilOp);
D3D11_FILTER ConvertFilter(GLenum minFilter, GLenum magFilter, float maxAnisotropy); D3D11_FILTER ConvertFilter(GLenum minFilter, GLenum magFilter, float maxAnisotropy);
D3D11_TEXTURE_ADDRESS_MODE ConvertTextureWrap(GLenum wrap); D3D11_TEXTURE_ADDRESS_MODE ConvertTextureWrap(GLenum wrap);
FLOAT ConvertMinLOD(GLenum minFilter); FLOAT ConvertMinLOD(GLenum minFilter, unsigned int lodOffset);
FLOAT ConvertMaxLOD(GLenum minFilter); FLOAT ConvertMaxLOD(GLenum minFilter, unsigned int lodOffset);
DXGI_FORMAT ConvertRenderbufferFormat(GLenum format); DXGI_FORMAT ConvertRenderbufferFormat(GLenum format);
DXGI_FORMAT ConvertTextureFormat(GLenum format); DXGI_FORMAT ConvertTextureFormat(GLenum format);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment