コード例 #1
0
  /** *************************** GL FUNCTIONS ************************** */
  @TargetApi(8)
  private void setLight(int _program) {
    // rotate the light?
    if (lightRotate) {
      angle += 0.000005f;
      if (angle >= 6.2) angle = 0.0f;

      // rotate light about y-axis
      float newPosX = (float) (Math.cos(angle) * lightPos[0] - Math.sin(angle) * lightPos[2]);
      float newPosZ = (float) (Math.sin(angle) * lightPos[0] + Math.cos(angle) * lightPos[2]);
      lightPos[0] = newPosX;
      lightPos[2] = newPosZ;
    }

    // lighting variables
    // send to shaders
    GLES20.glUniform4fv(GLES20.glGetUniformLocation(_program, "lightPos"), 1, lightPos, 0);
    GLES20.glUniform4fv(GLES20.glGetUniformLocation(_program, "lightColor"), 1, lightColor, 0);

    // material
    GLES20.glUniform4fv(GLES20.glGetUniformLocation(_program, "matAmbient"), 1, matAmbient, 0);
    GLES20.glUniform4fv(GLES20.glGetUniformLocation(_program, "matDiffuse"), 1, matDiffuse, 0);
    GLES20.glUniform4fv(GLES20.glGetUniformLocation(_program, "matSpecular"), 1, matSpecular, 0);
    GLES20.glUniform1f(GLES20.glGetUniformLocation(_program, "matShininess"), matShininess);
  }
コード例 #2
0
 @Override
 public void applyParams() {
   super.applyParams();
   GLES20.glUniform4fv(muToonColor0Handle, 1, mToonColor0, 0);
   GLES20.glUniform4fv(muToonColor1Handle, 1, mToonColor1, 0);
   GLES20.glUniform4fv(muToonColor2Handle, 1, mToonColor2, 0);
   GLES20.glUniform4fv(muToonColor3Handle, 1, mToonColor3, 0);
 }
コード例 #3
0
ファイル: Scene.java プロジェクト: Karm/galgs
  public void draw() {
    // Add program to OpenGL environment
    GLES20.glUseProgram(mProgram);

    // get handle to vertex shader's vPosition member
    mPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");

    // Enable a handle to the scene vertices
    GLES20.glEnableVertexAttribArray(mPositionHandle);

    // Prepare the scene coordinate data
    GLES20.glVertexAttribPointer(
        mPositionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, VERTEX_STRIDE, vertexBuffer);

    // get handle to fragment shader's vColor member
    mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor");
    // Set colorVertices for drawing the scene
    GLES20.glUniform4fv(mColorHandle, 1, colorVertices, 0);

    // Get handle to shape's transformation matrix
    int mtrxhandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");

    // Apply the projection and view transformation
    GLES20.glUniformMatrix4fv(mtrxhandle, 1, false, pointsRenderer.mtrxProjectionAndView, 0);

    // Draw the scene
    GLES20.glDrawArrays(GLES20.GL_POINTS, 0, vertexCount);

    // Disable vertex array
    GLES20.glDisableVertexAttribArray(mPositionHandle);

    if (drawLines) {
      GLES20.glUseProgram(mLinesProgram);
      mLinesPositionHandle = GLES20.glGetAttribLocation(mLinesProgram, "vPosition");
      GLES20.glEnableVertexAttribArray(mLinesPositionHandle);
      // Prevent null pointer race condition
      if (linesVertexBuffer != null) {
        GLES20.glVertexAttribPointer(
            mLinesPositionHandle,
            COORDS_PER_VERTEX,
            GLES20.GL_FLOAT,
            false,
            VERTEX_STRIDE,
            linesVertexBuffer);
        mLinesColorHandle = GLES20.glGetUniformLocation(mLinesProgram, "vColor");
        GLES20.glUniform4fv(mLinesColorHandle, 1, colorLines, 0);
        int mtrxLineshandle = GLES20.glGetUniformLocation(mLinesProgram, "uMVPMatrix");
        GLES20.glUniformMatrix4fv(
            mtrxLineshandle, 1, false, pointsRenderer.mtrxProjectionAndView, 0);
        // GLES20.glDrawArrays(GLES20.GL_LINE_STRIP, 0, linesVertexCount);
        // GLES20.glDrawArrays(GLES20.GL_LINES, 0, linesVertexCount);
        // GLES20.glDrawArrays(GLES20.GL_LINE_LOOP, 0, linesVertexCount);
        // GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, linesVertexCount);
        GLES20.glDrawArrays(renderMethod, 0, linesVertexCount);
        GLES20.glDisableVertexAttribArray(mLinesPositionHandle);
      }
    }
  }
コード例 #4
0
  public void draw() {

    // Add program to OpenGLES environment
    GLES20.glUseProgram(mProgram);

    // get handle to vertex shader's vPosition member
    mPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");

    // Enable a handle to the triangle vertices
    GLES20.glEnableVertexAttribArray(mPositionHandle);

    // Prepare the triangle coordinate data
    GLES20.glVertexAttribPointer(
        mPositionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, mVertexStride, mVertexBuffer);

    // get handle to fragment shader's vColor member
    mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor");

    // set color for drawing the triangle
    GLES20.glUniform4fv(mColorHandle, 1, mColor, 0);

    // draw the triangle
    GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, mVertexCount);

    // disable vertex array
    GLES20.glDisableVertexAttribArray(mPositionHandle);
  }
コード例 #5
0
  public void draw(float[] mvpMatrix) {
    // Add program to OpenGL environment
    GLES20.glUseProgram(mProgram);

    // get handle to vertex shader's vPosition member
    mPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");

    // Enable a handle to the triangle vertices
    GLES20.glEnableVertexAttribArray(mPositionHandle);

    // Prepare the triangle coordinate data
    GLES20.glVertexAttribPointer(
        mPositionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, vertexStride, vertexBuffer);

    // get handle to fragment shader's vColor member
    mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor");

    // Set color for drawing the triangle
    GLES20.glUniform4fv(mColorHandle, 1, color, 0);

    // get handle to shape's transformation matrix
    mMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
    MyGLRenderer.checkGlError("glGetUniformLocation");

    // Apply the projection and view transformation
    GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mvpMatrix, 0);
    MyGLRenderer.checkGlError("glUniformMatrix4fv");

    // Draw the square
    GLES20.glDrawElements(
        GLES20.GL_TRIANGLES, drawOrder.length, GLES20.GL_UNSIGNED_SHORT, drawListBuffer);

    // Disable vertex array
    GLES20.glDisableVertexAttribArray(mPositionHandle);
  }
コード例 #6
0
  public void init() {
    float[] vertex = genVertex(n, radius);
    GLES20.glGenBuffers(vbo.length, vbo, 0);
    vertexBuffer.position(0);
    vertexBuffer.put(vertex).position(0);
    GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, vbo[0]);
    GLES20.glBufferData(
        GLES20.GL_ARRAY_BUFFER,
        BYTE_PER_FLOAT * vertex.length,
        vertexBuffer,
        GLES20.GL_STATIC_DRAW);
    GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, 0);

    short[][] index = genIndex(n);
    GLES20.glGenBuffers(ibo.length, ibo, 0);
    for (int i = 0; i < 3; i++) {
      indexBuffer.position(0);
      indexBuffer.put(index[i]).position(0);
      GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, ibo[i]);
      GLES20.glBufferData(
          GLES20.GL_ELEMENT_ARRAY_BUFFER,
          BYTE_PER_SHORT * index[i].length,
          indexBuffer,
          GLES20.GL_STATIC_DRAW);
      GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, 0);
    }

    GLES20.glUniform4fv(mColorHandle, 1, color, 0);
  }
コード例 #7
0
ファイル: MyRender.java プロジェクト: huxianxiang/TestApp
  public void draw() {
    // 将program加入OpenGL ES环境中
    GLES20.glUseProgram(mProgram);

    // 获取指向vertex shader的成员vPosition的 handle
    mPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");

    // 启用一个指向三角形的顶点数组的handle
    GLES20.glEnableVertexAttribArray(mPositionHandle);

    // 准备三角形的坐标数据
    GLES20.glVertexAttribPointer(
        mPositionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, vertexStride, vertexBuffer);

    // 获取指向fragment shader的成员vColor的handle
    mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor");

    // 设置三角形的颜色
    GLES20.glUniform4fv(mColorHandle, 1, color, 0);

    // 画三角形
    GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vertexCount);

    // 禁用指向三角形的顶点数组
    GLES20.glDisableVertexAttribArray(mPositionHandle);
  }
コード例 #8
0
  public void draw(float[] mvpMatrix) {
    // Add program to OpenGL ES environment
    GLES20.glUseProgram(mProgram);

    // get handle to vertex shader's vPosition member
    mPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");

    // Enable a handle to the triangle vertices
    GLES20.glEnableVertexAttribArray(mPositionHandle);

    // Prepare the triangle coordinate data
    GLES20.glVertexAttribPointer(
        mPositionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, vertexStride, vertexBuffer);

    // get handle to fragment shader's vColor member
    mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor");

    // Set color for drawing the triangle
    GLES20.glUniform4fv(mColorHandle, 1, color, 0);

    // get handle to shape's transformation matrix
    mMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");

    // Pass the projection and view transformation to the shader
    GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mvpMatrix, 0);

    // Draw the triangle
    GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vertexCount);

    // Disable vertex array
    GLES20.glDisableVertexAttribArray(mPositionHandle);
  }
コード例 #9
0
ファイル: glObjects.java プロジェクト: ravibrk/touchCAD
    public void draw(float[] mvpMatrix) {
      GLES20.glUseProgram(mProgram);
      mPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");
      GLES20.glEnableVertexAttribArray(mPositionHandle);
      GLES20.glVertexAttribPointer(
          mPositionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, vertexStride, vertexBuffer);

      mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor");
      GLES20.glUniform4fv(mColorHandle, 1, color, 0);
      mMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
      checkGlError("glGetUniformLocation");
      GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mvpMatrix, 0);
      checkGlError("glUniformMatrix4fv");
      GLES20.glDrawArrays(GLES20.GL_LINES, 0, vertexCount);
      GLES20.glDisableVertexAttribArray(mPositionHandle);
    }
コード例 #10
0
ファイル: glObjects.java プロジェクト: ravibrk/touchCAD
 public void draw(float[] mvp, float x, float y) {
   float[] mvpMatrix = new float[16];
   System.arraycopy(mvp, 0, mvpMatrix, 0, 16);
   Matrix.setIdentityM(transMatrix, 0);
   //
   glBase.translate(transMatrix, x, y, 0);
   Matrix.multiplyMM(mvpMatrix, 0, transMatrix, 0, mvpMatrix, 0);
   GLES20.glUseProgram(mProgram);
   mPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");
   GLES20.glEnableVertexAttribArray(mPositionHandle);
   GLES20.glVertexAttribPointer(
       mPositionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, vertexStride, vertexBuffer);
   mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor");
   GLES20.glUniform4fv(mColorHandle, 1, color, 0);
   mMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
   checkGlError("glGetUniformLocation");
   GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mvpMatrix, 0);
   checkGlError("glUniformMatrix4fv");
   GLES20.glDrawArrays(GLES20.GL_LINE_LOOP, 0, vertexCount);
   GLES20.glDisableVertexAttribArray(mPositionHandle);
 }
コード例 #11
0
ファイル: AndroidGL20.java プロジェクト: simensan/playn
 @Override
 public void glUniform4fv(int location, int count, FloatBuffer v) {
   GLES20.glUniform4fv(location, count, v);
 }
コード例 #12
0
ファイル: AndroidGL20.java プロジェクト: simensan/playn
 @Override
 public void glUniform4fv(int location, int count, float[] v, int offset) {
   GLES20.glUniform4fv(location, count, v, offset);
 }
コード例 #13
0
ファイル: MarkerTile.java プロジェクト: walke/Xquisite_GIT
  /**
   * drawing function also calculates color value
   *
   * @param mvpMatrix
   */
  public void draw(float[] mvpMatrix) {
    float dif =
        Math.abs(midx - midTx)
            + Math.abs(midy - midTy)
            + Math.abs(sizx - sizTx)
            + Math.abs(sizy - sizTy);
    // Log.d("ASCII","dif"+dif);
    if (dif > 0.01) {
      midx += (midTx - midx) / 10.0f;
      midy += (midTy - midy) / 10.0f;
      sizx += (sizTx - sizx) / 10.0f;
      sizy += (sizTy - sizy) / 10.0f;
    }

    // color[0]= recBlink;
    // color[1]=1.0f-recBlink/5;
    // color[2]=1.0f-recBlink/5;

    GLES20.glUseProgram(mProgram);

    // get handle to vertex shader's vPosition member
    mPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");

    // get handle to fragment shader's vColor member
    mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor");

    // get handle to texture coordinate variable
    mTextureHandle = GLES20.glGetAttribLocation(mProgram, "TexCoordIn");
    // if (mTextureHandle == -1) Log.e("ASCII", "TexCoordIn not found");

    // get handle to shape's texture reference
    fsTexture = GLES20.glGetUniformLocation(mProgram, "Texture");
    // if (fsTexture == -1) Log.e("ASCII", "Texture not found");

    //
    GLES20.glUniform4fv(mColorHandle, 1, color, 0);

    // get handle to shape's transformation matrix
    mMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
    // XQGLRenderer.checkGlError("glGetUniformLocation");

    // Apply the projection and view transformation
    GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mvpMatrix, 0);
    // MyGLRenderer.checkGlError("glUniformMatrix4fv");

    //
    GLES20.glEnableVertexAttribArray(mPositionHandle);

    //
    GLES20.glVertexAttribPointer(
        mPositionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, vertexStride, vertexBuffer);

    GLES20.glVertexAttribPointer(
        mTextureHandle, COORDS_PER_TEXTURE, GLES20.GL_FLOAT, false, textureStride, textureBuffer);

    GLES20.glActiveTexture(GLES20.GL_TEXTURE3);
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureRef);
    GLES20.glUniform1i(fsTexture, 3);

    // GLES20.glEnableVertexAttribArray(mPositionHandle);
    GLES20.glEnableVertexAttribArray(mTextureHandle);

    GLES20.glEnable(GLES20.GL_BLEND);
    GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);

    // Draw the shape
    GLES20.glDrawElements(
        GLES20.GL_TRIANGLE_STRIP, drawOrder.length, GLES20.GL_UNSIGNED_SHORT, indexBuffer);

    GLES20.glDisable(GLES20.GL_BLEND);

    // Disable vertex array
    GLES20.glDisableVertexAttribArray(mPositionHandle);
    GLES20.glDisableVertexAttribArray(mTextureHandle);
  }
コード例 #14
0
ファイル: Cube.java プロジェクト: joshkillinger/graphics
  public void draw(float[] mvMatrix, float[] pMatrix) {
    float[] normalMatrix = new float[16];
    float[] tmpMatrix = new float[16];
    Matrix.invertM(tmpMatrix, 0, mvMatrix, 0);
    Matrix.transposeM(normalMatrix, 0, tmpMatrix, 0);

    // Add program to OpenGL ES environment
    GLES20.glUseProgram(shaderProgram);

    // vertex position attribute array
    int mPositionHandle = GLES20.glGetAttribLocation(shaderProgram, "vPosition");
    GLES20.glEnableVertexAttribArray(mPositionHandle);
    GLES20.glVertexAttribPointer(
        mPositionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, vertexStride, vertexBuffer);

    // vertex normal attribute array
    int mNormalHandle = GLES20.glGetAttribLocation(shaderProgram, "vNormal");
    GLES20.glEnableVertexAttribArray(mNormalHandle);
    GLES20.glVertexAttribPointer(
        mNormalHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, vertexStride, normalBuffer);

    // vertex UV attribute array
    int mUVHandle = GLES20.glGetAttribLocation(shaderProgram, "vTexCoord");
    GLES20.glEnableVertexAttribArray(mUVHandle);
    GLES20.glVertexAttribPointer(mUVHandle, 2, GLES20.GL_FLOAT, false, 8, uvBuffer);

    // material data
    int mColorHandle = GLES20.glGetUniformLocation(shaderProgram, "Color");
    int mAmbientHandle = GLES20.glGetUniformLocation(shaderProgram, "Ambient");
    int mDiffuseHandle = GLES20.glGetUniformLocation(shaderProgram, "Diffuse");
    int mSpecularHandle = GLES20.glGetUniformLocation(shaderProgram, "Specular");
    int mShininessHandle = GLES20.glGetUniformLocation(shaderProgram, "Shininess");
    GLES20.glUniform4fv(mColorHandle, 1, color, 0);
    GLES20.glUniform3fv(mAmbientHandle, 1, ambient, 0);
    GLES20.glUniform3fv(mDiffuseHandle, 1, diffuse, 0);
    GLES20.glUniform3fv(mSpecularHandle, 1, specular, 0);
    GLES20.glUniform1f(mShininessHandle, shininess);

    // transformation matrices
    int mMVMatrixHandle = GLES20.glGetUniformLocation(shaderProgram, "MVMatrix");
    int mPMatrixHandle = GLES20.glGetUniformLocation(shaderProgram, "PMatrix");
    int mNormalMatrixHandle = GLES20.glGetUniformLocation(shaderProgram, "NormalMatrix");
    GLES20.glUniformMatrix4fv(mMVMatrixHandle, 1, false, mvMatrix, 0);
    GLES20.glUniformMatrix4fv(mPMatrixHandle, 1, false, pMatrix, 0);
    GLES20.glUniformMatrix4fv(mNormalMatrixHandle, 1, false, normalMatrix, 0);

    // lighting data
    int mLightPosHandle = GLES20.glGetUniformLocation(shaderProgram, "LightPos");
    int mLightColorHandle = GLES20.glGetUniformLocation(shaderProgram, "LightColor");
    GLES20.glUniform4fv(mLightPosHandle, 1, lightPosition, 0);
    GLES20.glUniform3fv(mLightColorHandle, 1, lightColor, 0);

    // texture
    GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[0]);
    int mTexHandle = GLES20.glGetUniformLocation(shaderProgram, "Tex");
    GLES20.glUniform1i(mTexHandle, 0);

    // Draw the object
    GLES20.glDrawElements(
        GLES20.GL_TRIANGLES, drawOrder.length, GLES20.GL_UNSIGNED_SHORT, drawListBuffer);

    // Disable arrays
    GLES20.glDisableVertexAttribArray(mPositionHandle);
    GLES20.glDisableVertexAttribArray(mNormalHandle);
    GLES20.glDisableVertexAttribArray(mUVHandle);
  }
コード例 #15
0
ファイル: WaterLayer.java プロジェクト: scheibk/FFZ
 public void setColor(float[] c) {
   GLES20.glUniform4fv(mColorHandle, 1, c, 0);
 }