setupFrameBufferTexture method
void
setupFrameBufferTexture(
- dynamic framebuffer,
- RenderTarget renderTarget,
- Texture texture,
- dynamic attachment,
- dynamic textureTarget,
- dynamic level,
Implementation
void setupFrameBufferTexture(framebuffer, RenderTarget renderTarget, Texture texture, attachment, textureTarget, level ) {
final glFormat = utils.convert( texture.format, texture.colorSpace );
final glType = utils.convert( texture.type );
final glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );
final renderTargetProperties = properties.get( renderTarget );
final textureProperties = properties.get( texture );
textureProperties['__renderTarget'] = renderTarget;
if (renderTargetProperties['__hasExternalTextures'] == null) {
final width = math.max( 1, renderTarget.width >> level );
final height = math.max( 1, renderTarget.height >> level );
if ( textureTarget == WebGL.TEXTURE_3D || textureTarget == WebGL.TEXTURE_2D_ARRAY ) {
state.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null );
} else {
state.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null );
}
}
state.bindFramebuffer( WebGL.FRAMEBUFFER, framebuffer );
if ( useMultisampledRTT( renderTarget ) && multisampledRTTExt != null) {
multisampledRTTExt.framebufferTexture2DMultisampleEXT( WebGL.FRAMEBUFFER, attachment, textureTarget, textureProperties['__webglTexture'], 0, getRenderTargetSamples( renderTarget ) );
}
else if ( textureTarget == WebGL.TEXTURE_2D || ( textureTarget >= WebGL.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= WebGL.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753
_gl.framebufferTexture2D( WebGL.FRAMEBUFFER, attachment, textureTarget, textureProperties['__webglTexture'], level );
}
state.bindFramebuffer( WebGL.FRAMEBUFFER, null );
}