public void onDrawFrame(GL10 gl) { // 清除深度缓冲与颜色缓冲 GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT); double angradElevation = Math.toRadians(angdegElevation); // 仰角(弧度) double angradAzimuth = Math.toRadians(angdegAzimuth); // 方位角 cameraX = (float) (targetX + sightDis * Math.cos(angradElevation) * Math.cos(angradAzimuth)); cameraY = (float) (targetY + sightDis * Math.sin(angradElevation)); cameraZ = (float) (targetZ + sightDis * Math.cos(angradElevation) * Math.sin(angradAzimuth)); MatrixState.setCamera( // 设置camera位置 cameraX, // 人眼位置的X cameraY, // 人眼位置的Y cameraZ, // 人眼位置的Z targetX, // 人眼球看的点X targetY, // 人眼球看的点Y targetZ, // 人眼球看的点Z 0, // 头的朝向 1, 0); // 保护现场 MatrixState.pushMatrix(); MatrixState.translate(0, 0, -15); building.drawSelf(textureId); MatrixState.popMatrix(); }