setupFrameBufferTexture method

void setupFrameBufferTexture(
  1. dynamic framebuffer,
  2. RenderTarget renderTarget,
  3. Texture texture,
  4. dynamic attachment,
  5. dynamic textureTarget,
  6. 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 );
}