基本的に、レイヤー階層をサポートする必要があるOpenGL | esを使用してレイヤーシステムを作成しようとしています(レイヤーにはサブレイヤーなどを含めることができます)。レイヤーに親がある場合、描画時に親レイヤーにクリッピングする必要があります。すべてのレイヤーが長方形の場合、それはかなり簡単で、交差を計算して範囲外のビットを切り取ることができます。ただし、各レイヤーには変換マトリックスを含めることもできます。レイヤーを別のレイヤー内で変換すると、長方形ではなくなり、交点を計算することができなくなります。
以下の図は、問題を示しています (親はピンクで、子は薄緑です)。
上記の例ではglScissor
、長方形のバウンディング ボックスを設定するには呼び出しで十分ですが、親レイヤーも変換できるため (長方形ではなくなります)、これは機能しません。また、親レイヤが変換される場合、子がレンダリングされる前に、子の変換行列が親の変換行列に乗算されるため、変換された場合でも、子が親の内部にあるような錯覚が生じます。