コード例 #1
0
ファイル: ProjectedDepthTexture.java プロジェクト: nasa/DERT
  /**
   * Initialize this ProjectedDepthTexture with the renderer
   *
   * @param r
   */
  public void init(final Renderer r) {
    // already initialized ?
    if (textureRenderer != null) {
      return;
    }

    textureRenderer = ImageUtil.createTextureRenderer(0, 0, r, true);
    if (isParallel) {
      textureRenderer.getCamera().setProjectionMode(Camera.ProjectionMode.Parallel);
    }

    // Enforce performance enhancing states on the renderer.
    // No textures or colors are required since we're only
    // interested in recording depth.
    // Also only need front faces when rendering the shadow maps

    // turn off clipping
    ClipState noClip = new ClipState();
    noClip.setEnabled(false);
    textureRenderer.enforceState(noClip);

    // turn off texturing
    TextureState noTexture = new TextureState();
    noTexture.setEnabled(false);
    textureRenderer.enforceState(noTexture);

    // turn off colors
    ColorMaskState colorDisabled = new ColorMaskState();
    colorDisabled.setAll(false);
    textureRenderer.enforceState(colorDisabled);

    // cull back faces
    CullState cullFace = new CullState();
    cullFace.setEnabled(true);
    cullFace.setCullFace(CullState.Face.Back);
    textureRenderer.enforceState(cullFace);

    // turn off lights
    LightState noLights = new LightState();
    noLights.setEnabled(false);
    textureRenderer.enforceState(noLights);

    // use flat shading
    ShadingState flat = new ShadingState();
    flat.setShadingMode(ShadingMode.Flat);
    textureRenderer.enforceState(flat);

    // disable GLSLShaderObjectsState
    GLSLShaderObjectsState glsl = new GLSLShaderObjectsState();
    glsl.setEnabled(false);
    textureRenderer.enforceState(glsl);

    // enforce the shadow offset parameters
    textureRenderer.enforceState(offsetState);

    if (texture == null) {
      createTexture();
    }
    textureRenderer.setupTexture(texture);
  }