render method

  1. @override
void render(
  1. WebGLRenderer renderer,
  2. WebGLRenderTarget writeBuffer,
  3. WebGLRenderTarget readBuffer, {
  4. double? deltaTime,
  5. bool? maskActive,
})
override

Implementation

@override
void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, WebGLRenderTarget readBuffer, {double? deltaTime, bool? maskActive}) {
  final oldAutoClear = renderer.autoClear;
  renderer.autoClear = false;

  double? oldClearAlpha;
  Material? oldOverrideMaterial;

  if (overrideMaterial != null) {
    oldOverrideMaterial = scene.overrideMaterial;
    scene.overrideMaterial = overrideMaterial;
  }

  if (clearColor != null) {
    renderer.getClearColor(_oldClearColor);
    renderer.setClearColor(clearColor!, renderer.getClearAlpha());
  }

		if ( clearAlpha != null ) {
			oldClearAlpha = renderer.getClearAlpha();
			renderer.setClearAlpha( clearAlpha! );
		}

  if (clearDepth) {
    renderer.clearDepth();
  }

  renderer.setRenderTarget(renderToScreen ? null : readBuffer);

  // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600
  if (clear){
    renderer.clear(renderer.autoClearColor, renderer.autoClearDepth,renderer.autoClearStencil);
  }
  renderer.render(scene, camera);

  if (clearColor != null) {
    renderer.setClearColor(_oldClearColor);
  }
		if ( clearAlpha != null ) {
			renderer.setClearAlpha( oldClearAlpha! );
		}
  if (overrideMaterial != null) {
    scene.overrideMaterial = oldOverrideMaterial;
  }

  renderer.autoClear = oldAutoClear;
}