| 15 | } |
| 16 | |
| 17 | GL46SamplerState::GL46SamplerState(SamplerState const* samplerState) |
| 18 | : |
| 19 | GL46DrawingState(samplerState) |
| 20 | { |
| 21 | glGenSamplers(1, &mGLHandle); |
| 22 | |
| 23 | glSamplerParameteri(mGLHandle, GL_TEXTURE_WRAP_S, msMode[samplerState->mode[0]]); |
| 24 | glSamplerParameteri(mGLHandle, GL_TEXTURE_WRAP_T, msMode[samplerState->mode[1]]); |
| 25 | glSamplerParameteri(mGLHandle, GL_TEXTURE_WRAP_R, msMode[samplerState->mode[2]]); |
| 26 | |
| 27 | // TODO: GL_TEXTURE_MAX_ANISOTROPY_EXT is not defined? |
| 28 | // glSamplerParameterf(samplerState, GL_TEXTURE_MAX_ANISOTROPY_EXT, |
| 29 | // samplerState->maxAnisotropy); |
| 30 | |
| 31 | glSamplerParameterf(mGLHandle, GL_TEXTURE_MIN_LOD, samplerState->minLOD); |
| 32 | glSamplerParameterf(mGLHandle, GL_TEXTURE_MAX_LOD, samplerState->maxLOD); |
| 33 | glSamplerParameterf(mGLHandle, GL_TEXTURE_LOD_BIAS, samplerState->mipLODBias); |
| 34 | |
| 35 | glSamplerParameterfv(mGLHandle, GL_TEXTURE_BORDER_COLOR, &samplerState->borderColor[0]); |
| 36 | |
| 37 | switch(samplerState->filter) |
| 38 | { |
| 39 | case SamplerState::Filter::MIN_P_MAG_P_MIP_P: |
| 40 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); |
| 41 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
| 42 | break; |
| 43 | case SamplerState::Filter::MIN_P_MAG_P_MIP_L: |
| 44 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR); |
| 45 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
| 46 | break; |
| 47 | case SamplerState::Filter::MIN_P_MAG_L_MIP_P: |
| 48 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); |
| 49 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
| 50 | break; |
| 51 | case SamplerState::Filter::MIN_P_MAG_L_MIP_L: |
| 52 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR); |
| 53 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
| 54 | break; |
| 55 | case SamplerState::Filter::MIN_L_MAG_P_MIP_P: |
| 56 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); |
| 57 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
| 58 | break; |
| 59 | case SamplerState::Filter::MIN_L_MAG_P_MIP_L: |
| 60 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); |
| 61 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
| 62 | break; |
| 63 | case SamplerState::Filter::MIN_L_MAG_L_MIP_P: |
| 64 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); |
| 65 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
| 66 | break; |
| 67 | case SamplerState::Filter::MIN_L_MAG_L_MIP_L: |
| 68 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); |
| 69 | glSamplerParameteri(mGLHandle, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
| 70 | break; |
| 71 | default: |
| 72 | LogError("Unknown sampler state filter."); |
| 73 | } |
| 74 | } |
nothing calls this directly
no test coverage detected