これが取り引きです。私はopengl ESで2Dフレームワーク/ゲームエンジンをプログラミングしています。私は VBO とオルソ プロジェクションを使用して、(テストの一環として) 画面全体にスプライトの配置を描画しています。移動と回転をいじるまでは、すべてがうまくスムーズに進みました。私が抱えている特定の問題は、回転の前に glTranslatef() で変換を適用すると、関数がスプライトだけでなく原点も移動し、変換全体が台無しになることです。glTranslatef() を使用して画面のサイズの半分のスプライトを右と下に移動し (はい、私の原点は左上にあります)、一定の回転を適用するため、このように機能していることは 100% 確信しています。そして、物は画面の中心の周りを円形の経路で動き続けます(実際には回転しますが、期待どおりではありません.
コードが必要な場合は、次のようにします。
gl.glTranslatef(-(x+width/2), -(y+height/2), -layer);
gl.glRotatef(angle, 0.0f, 0.0f, -1.0f);
gl.glTranslatef(x+width/2, y+height/2, layer);
このコードの断片では、x と y はスプライトの位置、高さと幅はスプライトのサイズ、角度は回転角度、レイヤーはスプライトをいくつかのレイヤーに編成する形式です。 ?
繰り返しますが、私の問題は glTranslatef(); です。スプライトとオリジンの両方を動かしています。何か間違ったことをしているのですか、それとも翻訳について何か誤解していますか?
前もって感謝します。