私は最近、JOGL (Java で OpenGL コマンドにアクセスできるようにする) を使用してアプリケーション内に 3D 環境を作成する Java アプリケーション環境で API の使用を開始しました (そのため、OpenGL はまったく初めてです)。
この API は、表示リストを使用してコマンドをグループ化し、高速化してジオメトリ コンポーネントを表示します。これまでのところ、display メソッドでは、最初にマウスによって行われたシーンへのすべての変更 (ズーム、回転、平行移動) が適用され、次に現在の表示リストが呼び出されます。API は、ツリーのような構造に配置されるさまざまなシーン要素 (サーフェス、ライト、変換) を提供します。この構造は、これらのシーン要素が後で「実行」される順序を決定します。このシーン ツリーの実行は、表示リストに入れられます。これは意図したとおりに機能します。
ここで追加したいのは、コンポーネントの現在の向きを表す小さな座標系です。これは、シーン ツリーに追加される新しいシーン エレメントになります。この座標系は、マウスで行った回転によって明らかに影響を受ける必要がありますが、スケーリングしたり、他の場所に変換したりしてはなりません。
私の問題は、マウスの動きがシーン ツリーの実行外で適用されるため、ツリーの特定のシーン要素のみに回転のみを適用する方法がわかりません。ディスプレイリストの対応する部分でマウスの動きを元に戻すことはできません(私の理解では)。これは、ディスプレイリストがマウス位置の変更のパラメーターを取得する必要があることを意味するためです。しかし、状態が一度決定され、この状態でのみ実行されるため、表示リストのパラメーターを操作することはできません (正しいですか?)。回転状態が失われるため、射影行列をリセットすることはできません。
私の問題が理解できることを願っています。表示リストでこれを行う方法はありますか? または、この API の表示リストを別のものに置き換える必要がありますか? いずれにせよ、それらは推奨されていないようです。