MCPcopy Create free account
hub / github.com/davideberly/GeometricTools / GL46SamplerState

Method GL46SamplerState

GTE/Graphics/GL46/GL46SamplerState.cpp:17–74  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15}
16
17GL46SamplerState::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}

Callers

nothing calls this directly

Calls 4

glGenSamplersFunction · 0.85
glSamplerParameteriFunction · 0.85
glSamplerParameterfFunction · 0.85
glSamplerParameterfvFunction · 0.85

Tested by

no test coverage detected