public void drawSelfLeft(String score, int texId) // 传入数字和纹理坐标 左对齐
     {
   scoreStr = score;
   MatrixState.pushMatrix();
   for (int i = 0; i < scoreStr.length(); i++) // 将得分中的每个数字字符绘制
   {
     char c = scoreStr.charAt(i);
     MatrixState.translate(width, 0, 0);
     number[c - '0'].drawSelf(texId);
   }
   MatrixState.popMatrix();
 }
Example #2
0
 // 总的绘制方法drawSelf
 public void drawSelf(int texId) {
   // 绘制交通柱的圆柱部分
   cone_in.drawSelf(texId);
   // 绘制交通柱下方底座的上面
   MatrixState.pushMatrix();
   MatrixState.translate(0, -UNIT_SIZE, 0);
   pedestal.drawSelf(texId);
   MatrixState.popMatrix();
   // 绘制交通柱下方底座的侧面
   MatrixState.pushMatrix();
   MatrixState.translate(0, -UNIT_SIZE - HEIGHT, 0);
   cylinder.drawSelf(texId);
   MatrixState.popMatrix();
   // 绘制交通柱下方底座的下面
   MatrixState.pushMatrix();
   MatrixState.translate(0, -UNIT_SIZE - HEIGHT * 2, 0);
   MatrixState.rotate(180, 1, 0, 0);
   pedestal.drawSelf(texId);
   MatrixState.popMatrix();
 }
Example #3
0
    // 自定义的绘制方法
    public void drawSelf(int texId) {
      // 使用某套指定的Shader程序
      GLES20.glUseProgram(mProgram);
      // 将最终变换矩阵传入到Shader程序中
      GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, MatrixState.getFinalMatrix(), 0);
      // 传入坐标数据
      GLES20.glVertexAttribPointer(
          maPositionHandle, 3, GLES20.GL_FLOAT, false, 3 * 4, mVertexBuffer);
      // 传入纹理坐标数据
      GLES20.glVertexAttribPointer(
          maTexCoorHandle, 2, GLES20.GL_FLOAT, false, 2 * 4, mTexCoorBuffer);
      // 允许顶点位置数据数组
      GLES20.glEnableVertexAttribArray(maPositionHandle);
      GLES20.glEnableVertexAttribArray(maTexCoorHandle);

      // 绑定纹理
      GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
      GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texId);

      // 绘制纹理矩形
      GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vCount);
    }