複雑でいいタイトルが思い浮かばないので本文で説明します
現在 Minecraft っぽいものを作ってます。
Finitiという3Dライブラリを利用していますが、レンダリング方法としてはP3Dのような三角形テクスチャのスプライトを表示するものです。昨日まではこの方法を使っていました。
別に思いついたのが、レイヤーを立方体状に配置し、ブロックの6面をそれぞれのレイヤー上に位置を計算して表示する方法です。こちらの方が粗いテクスチャを使わないでいいし、速いだろうということで試してみた結果が上記のスクリーショットです。レンガブロックのそれぞれの面が1つのスプライトとなっています。
位置計算には成功しましたが、それぞれのレイヤーのZ座標は独立しているため、面ごとに固定の順番で表示されてしまい、隠面消去ができていません。つまり、手前にあるのに、奥にあるオブジェクトに隠れてしまう現象が起こります。
そこで、かならず手前に表示させるスプライトをより上層のレイヤーに表示するようにしたいです。
レイヤーは8つしか使えないため、同じプログラムをサブプログラムとしても実行し、上のように手前にあるのに意図せず隠れるスプライトのみをサブプログラム側で表示させたいと思います。つまり「メイン側で表示するか、サブ側で表示するかを選択したい」というのが目的です。
ここで、サブ側で表示しないと隠れてしまうスプライトを判定する方法がなかなか出てこず、アイデアや方法がもしあれば教えていただきたいです。
ゲームの開始時にサブプログラムも自動起動する処理と、メイン・サブ間でのカメラ位置、ワールドの同期はすでにできています。