setTextureParameters method
void
setTextureParameters(
- dynamic textureType,
- Texture texture, [
- dynamic supportsMips
])
Implementation
void setTextureParameters(textureType, Texture texture, [supportsMips]) {
if ( texture.type == FloatType && !extensions.has( 'OES_texture_float_linear' ) &&
( texture.magFilter == LinearFilter || texture.magFilter == LinearMipmapNearestFilter || texture.magFilter == NearestMipmapLinearFilter || texture.magFilter == LinearMipmapLinearFilter ||
texture.minFilter == LinearFilter || texture.minFilter == LinearMipmapNearestFilter || texture.minFilter == NearestMipmapLinearFilter || texture.minFilter == LinearMipmapLinearFilter ) ) {
console.warning( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );
}
_gl.texParameteri( textureType, WebGL.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ]! );
_gl.texParameteri( textureType, WebGL.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ]! );
if ( textureType == WebGL.TEXTURE_3D || textureType == WebGL.TEXTURE_2D_ARRAY ) {
_gl.texParameteri( textureType, WebGL.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ]! );
}
_gl.texParameteri( textureType, WebGL.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ]! );
_gl.texParameteri( textureType, WebGL.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ]! );
if (texture is DepthTexture && texture.compareFunction != null) {
_gl.texParameteri( textureType, WebGL.TEXTURE_COMPARE_MODE, WebGL.COMPARE_REF_TO_TEXTURE );
_gl.texParameteri( textureType, WebGL.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ]! );
}
if ( extensions.has( 'EXT_texture_filter_anisotropic' )) {
if ( texture.magFilter == NearestFilter ) return;
if ( texture.minFilter != NearestMipmapLinearFilter && texture.minFilter != LinearMipmapLinearFilter ) return;
if ( texture.type == FloatType && !extensions.has( 'OES_texture_float_linear' )) return; // verify extension
if ( texture.anisotropy > 1 || properties.get( texture )['__currentAnisotropy'] != null) {
final extension = extensions.get( 'EXT_texture_filter_anisotropic' );
if (kIsWeb && !kIsWasm) {
gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT,math.min(texture.anisotropy, capabilities.getMaxAnisotropy()).toDouble());
}
else {
gl.texParameterf(textureType, WebGL.TEXTURE_MAX_ANISOTROPY_EXT,math.min(texture.anisotropy, capabilities.getMaxAnisotropy()).toDouble());
}
properties.get( texture )['__currentAnisotropy'] = texture.anisotropy;
}
}
}