Пример #1
0
  /**
   * 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);
  }
Пример #2
0
 /** Clean up. */
 public void dispose() {
   if (textureRenderer != null) {
     try {
       textureRenderer.cleanup();
       textureRenderer = null;
     } catch (Exception e) {
       // do nothing
     }
   }
 }
Пример #3
0
  // Render the texture
  public void clear(final Renderer r) {

    updateProjection();

    // Render only vertices, nothing else
    setRenderVertexOnly(true);

    // render
    textureRenderer.clear(texture, Renderer.BUFFER_COLOR_AND_DEPTH);

    // restore states
    setRenderVertexOnly(false);

    // set the texture coordinate matrix
    texture.setTextureMatrix(projectionMatrix);
  }
Пример #4
0
 /**
  * Copy the texture to another
  *
  * @param tex
  */
 public void copyToTexture(Texture tex) {
   textureRenderer.copyToTexture(
       tex, 0, 0, textureRenderer.getWidth(), textureRenderer.getHeight(), 0, 0);
 }