-1

少し長すぎるので、ここに私のプログラム全体を投稿することはしません。しかし、私はこのレンダラー(短縮)を持っています:

     class OpenGLRenderer implements Renderer {

    private CubicPolygon cube;

    public OpenGLRenderer(Context context) {

        this.context = context;
        cube = new CubicPolygon();
    }

public void onDrawFrame(GL10 gl) {

    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glLoadIdentity();

    gl.glTranslatef(0.0f, 0.0f, -9.0f);
    gl.glScalef(0.8f, 0.8f, 0.8f);

    // If it's just a regular rotation
    if (!numberHasBeenDrawn) {
      gl.glRotatef(getXRotation(rotatingOfDOOMFire), 1, 0, 0);
      gl.glRotatef(getYRotation(rotatingOfDOOMFire), 0, 1, 0);
      gl.glRotatef(getZRotation(rotatingOfDOOMFire), 0, 0, 1);
    }

    // If there is a chosen one (number that is)
    if (numberHasBeenDrawn) {

      gl.glRotatef(xAnimation(number), 1, 0, 0);
      gl.glRotatef(yAnimation(number), 0, 1, 0);

    }
    gl.glFinish();
    cube.draw(gl);

  }

ここで、キューブ オブジェクトの現在の回転値を "numberHasBeenDrawn" if ステートメントで取得して、キューブを回転させる滑らかなエンド アニメーションを作成できるようにしたいと考えています。OpenGLはおそらくすべての回転値を便利な(ほとんど読めない)マトリックスに保存していますが、グーグルで調べた後、WHEREについて何も見つけることができませんでした(オブジェクトを最初に回転させる方法だけで、すでに行っています)。

// 編集: 参考になるかもしれないコードをもっと見たい場合は、先に進んで質問してください。それは秘密ではありません。投稿することもできます ;)

4

1 に答える 1

1

プログラムのどこかに回転値を自分でキャッシュする必要があります。OpenGL API から状態と値を読み取ることは一般的に推奨されておらず、遅くなる可能性があります。これは、API が許可するように構築されているパイプライン処理が中断されるためです (パフォーマンス上の理由から、CPU から GPU を分離するため)。

于 2013-01-30T21:41:12.303 に答える