Beispiel #1
0
  /**
   * Renders the skybox using VBO
   *
   * @param drawable current rendering context
   */
  public void display(GLAutoDrawable drawable) {
    GL gl = drawable.getGL();

    // Enable arrays
    gl.glEnableClientState(GL.GL_VERTEX_ARRAY);
    gl.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY);

    if (nVertices == 0) {
      createVBO(gl);
    }

    // gl.glDisable(GL.GL_CULL_FACE);
    gl.glTexEnvf(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE);
    gl.glEnable(GL.GL_TEXTURE_2D);
    texture.load(gl);

    // Vertex coordinates
    gl.glBindBufferARB(GL.GL_ARRAY_BUFFER_ARB, VBOIds[0]);
    gl.glVertexPointer(3, GL.GL_FLOAT, 0, 0);

    gl.glBindBufferARB(GL.GL_ARRAY_BUFFER_ARB, VBOIds[1]);
    gl.glTexCoordPointer(2, GL.GL_FLOAT, 0, 0);

    // Render
    // Draw All Of The Triangles At Once
    gl.glDrawArrays(GL.GL_TRIANGLES, 0, nVertices);

    // Disable Vertex Arrays
    gl.glDisableClientState(GL.GL_VERTEX_ARRAY);
    gl.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY);

    gl.glTexEnvf(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE);
    // gl.glEnable(GL.GL_CULL_FACE);
  }
Beispiel #2
0
  // ################# Leaves display methods #################################
  public void displayLeaves(GLAutoDrawable drawable) {
    GL gl = drawable.getGL();

    // Enable arrays
    gl.glEnableClientState(GL.GL_VERTEX_ARRAY);
    gl.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY);
    // Build the VBO if the tree is just harvested
    if (tree.needsGeometryUpdate()) {
      buildLeavesVBO(gl);
    }

    sendLeavesInfo(gl);

    // Disable Vertex Arrays
    gl.glDisableClientState(GL.GL_VERTEX_ARRAY);
    gl.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY);
  }
Beispiel #3
0
  /** OpenGL initialization function Called once, on startup */
  @Override
  public void init(GLAutoDrawable auto_drawable) {
    // initialize OpenGL state, load arrays, etc.
    // anything needs to be dont before the drawing calls
    final GL gl = auto_drawable.getGL();
    gl.glShadeModel(GL.GL_SMOOTH);
    gl.glClearColor(1.0f, 0.0f, 0.0f, 0.0f);
    gl.glClearDepth(1.0f);
    gl.glEnable(GL.GL_DEPTH_TEST);
    gl.glDepthFunc(GL.GL_LEQUAL);
    gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);

    gl.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY);
    gl.glEnableClientState(GL.GL_VERTEX_ARRAY);

    // set the texture mode to decal, so textures are rendered independent of
    // underlying colors
    gl.glTexEnvf(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_DECAL);

    // initialize vertex arrays
    initVertexArrays();

    // enable 2D texturing
    gl.glEnable(GL.GL_TEXTURE_2D);

    // load the question texture
    question_Texture = loadTexture("Data/Pictures/question_mark.png");

    // set up fog effect
    float fogColor[] = {0.5f, 0.5f, 0.5f, 1.0f}; // Fog Color

    gl.glFogi(GL.GL_FOG_MODE, GL.GL_LINEAR); // Fog Mode
    gl.glFogfv(GL.GL_FOG_COLOR, FloatArrayToFloatBuffer(fogColor)); // Set Fog Color
    gl.glFogf(GL.GL_FOG_DENSITY, 0.35f); // How Dense Will The Fog Be
    gl.glHint(GL.GL_FOG_HINT, GL.GL_NICEST); // Fog Hint Value
    gl.glFogf(GL.GL_FOG_START, 0.0f); // Fog Start Depth
    gl.glFogf(GL.GL_FOG_END, 3.0f); // Fog End Depth
    gl.glEnable(GL.GL_FOG); // Enables GL_FOG

    // load all textures
    LoadAllGuessModelTextures(guess_model_array);
  }
Beispiel #4
0
  // ############ Branch display methods ########################
  public void displayBranches(GLAutoDrawable drawable) {
    GL gl = drawable.getGL();

    // Enable arrays
    gl.glEnableClientState(GL.GL_VERTEX_ARRAY);

    if (tree.needsGeometryUpdate()) {
      buildBranchVBO(gl);
    }

    sendBoundingBoxInfo(gl, 0);

    // Disable Vertex Arrays
    gl.glDisableClientState(GL.GL_VERTEX_ARRAY);
  }
  private void display(GL gl, GLU glu, final JoglFrameBufferObject theFBO) {
    final int w = theFBO.getPixelWidth();
    final int h = theFBO.getPixelHeight();

    /* bind position data */
    gl.glEnableClientState(GL.GL_VERTEX_ARRAY);
    gl.glBindBuffer(GL.GL_ARRAY_BUFFER, _myVBO);
    gl.glVertexPointer(4, GL.GL_FLOAT, 0, 0);

    /* bind point size data */
    _myShaderManager.enable(_myPointSpriteShader);
    final int myPointSizeAttrib =
        gl.glGetAttribLocation(_myPointSpriteShader.getOpenGLID(), "vertexAttribute");
    gl.glEnableVertexAttribArray(myPointSizeAttrib);
    gl.glBindBuffer(GL.GL_ARRAY_BUFFER, _myIBO);
    gl.glVertexAttribPointer(myPointSizeAttrib, 3, GL.GL_FLOAT, false, 0, 0);
    gl.glEnable(GL.GL_VERTEX_PROGRAM_POINT_SIZE_ARB);

    /* --- */
    final JoglFrameBufferObject READ_FBO = _myFBO;
    _myShaderManager.setUniform(
        _myPointSpriteShader,
        "textureVelocity",
        READ_FBO.additional_texture(BufferInfo.SECONDARY).getTextureUnit() - GL.GL_TEXTURE0);
    _myShaderManager.setUniform(_myPointSpriteShader, "velocityThreshold", velocity_threshold);
    _myShaderManager.setUniform(_myPointSpriteShader, "sizeThreshold", size_threshold);
    _myShaderManager.setUniform(_myPointSpriteShader, "pointSize", point_size);
    _myShaderManager.setUniform(_myPointSpriteShader, "flowdirection", flow_direction);
    _myShaderManager.setUniform(_myPointSpriteShader, "collisionratio", collision_ratio);

    gl.glActiveTexture(READ_FBO.additional_texture(BufferInfo.SECONDARY).getTextureUnit());
    gl.glBindTexture(
        READ_FBO.additional_texture(BufferInfo.SECONDARY).getTextureTarget(),
        READ_FBO.additional_texture(BufferInfo.SECONDARY).getTextureID());

    JoglUtil.printGLError(gl, glu, "binding texture", true);

    gl.glDrawArrays(GL.GL_POINTS, 0, w * h);

    gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0);
    gl.glDisableClientState(GL.GL_VERTEX_ARRAY);
    gl.glDisableVertexAttribArray(myPointSizeAttrib);
    _myShaderManager.disable();
    gl.glDisable(GL.GL_VERTEX_PROGRAM_POINT_SIZE_ARB);
    gl.glBindTexture(READ_FBO.additional_texture(BufferInfo.SECONDARY).getTextureTarget(), 0);

    JoglUtil.printGLError(gl, glu, "display()", true);
  }
Beispiel #6
0
  // ################ Heap of coins display methods ##############################
  public void displayHeapOfCoins(GLAutoDrawable drawable) {
    GL gl = drawable.getGL();

    // Enable arrays
    gl.glEnableClientState(GL.GL_VERTEX_ARRAY);

    // Build the VBO if the tree is just harvested
    if (tree.isFreshlyHarvested()) {
      buildHeapVBO(gl);
    }

    sendBoundingBoxInfo(gl, 0);

    // Disable Vertex Arrays
    gl.glDisableClientState(GL.GL_VERTEX_ARRAY);
  }
Beispiel #7
0
  // ################ Fruits display methods ##################################
  public void displayFruits(GLAutoDrawable drawable) {
    GL gl = drawable.getGL();

    // Enable arrays
    gl.glEnableClientState(GL.GL_VERTEX_ARRAY);

    if (tree.isFreshlyFruited()) {
      buildFruitVBO(gl);
    } else if (tree.needsFruitGeometryUpdate()) {
      updateFruitVBO(gl);
    }

    sendBoundingBoxInfo(gl, 1);

    // Disable Vertex Arrays
    gl.glDisableClientState(GL.GL_VERTEX_ARRAY);
  }
Beispiel #8
0
  /**
   * Issue ogl commands needed for this renderable object.
   *
   * @param gl The gl context to draw with
   */
  public void render(GL gl) {
    // No coordinates, do nothing.
    if ((vertexFormat & COORDINATE_MASK) == 0) return;

    setVertexState(gl);

    if ((vertexFormat & EDGES) != 0) {
      gl.glEnableClientState(GL.GL_EDGE_FLAG_ARRAY);
      gl.glEdgeFlagPointer(0, edgeBuffer);
    }

    gl.glDrawArrays(GL.GL_QUADS, 0, numCoords);

    if ((vertexFormat & EDGES) != 0) {
      gl.glDisableClientState(GL.GL_EDGE_FLAG_ARRAY);
      gl.glEdgeFlag(true);
    }

    clearVertexState(gl);
  }
Beispiel #9
0
 static final void method547(
     int i, int i_86_, int i_87_, int i_88_, boolean[][] bools, int[][] is) {
   GL gl = Class97.aGL1536;
   Class97.method1546(1);
   Class97.method1553(1);
   Class97.method1538();
   Class97.method1518(false);
   Class83_Sub14.method943(116, 0, 0);
   gl.glDepthMask(false);
   for (int i_89_ = 0; i_89_ < anInt941; i_89_++) {
     for (int i_90_ = 0; i_90_ < anInt944; i_90_++) {
       while_57_:
       for (int i_91_ = i_89_ * 8; i_91_ < i_89_ * 8 + 8; i_91_++) {
         if (i_91_ - i >= -i_87_ && i_91_ - i <= i_87_) {
           for (int i_92_ = i_90_ * 8; i_92_ < i_90_ * 8 + 8; i_92_++) {
             if (i_92_ - i_86_ >= -i_87_
                 && i_92_ - i_86_ <= i_87_
                 && (bools[i_91_ - i + i_87_][i_92_ - i_86_ + i_87_])) {
               Class38 class38 = aClass38ArrayArray940[i_89_][i_90_];
               if (((Class38) class38).aBoolean718) {
                 class38.method351(aClass17_Sub1_942, i_89_, i_90_);
                 ((Class38) class38).aBoolean718 = false;
               }
               gl.glPushMatrix();
               gl.glTranslatef((float) (i_89_ * 1024), 0.0F, (float) (i_90_ * 1024));
               class38.method354();
               gl.glPopMatrix();
               break while_57_;
             }
           }
         }
       }
     }
   }
   gl.glEnableClientState(32886);
   gl.glDepthMask(true);
   Class97.method1552();
 }