ゲームはテクスチャクワッドを使用したトップダウンの2Dパースペクティブですが、加速グラフィックスにGLを使用する(ANSI C、Windows互換性のため、C99は使用できません)ゲームでタイルマップを描画したいと思います。タイムマップを処理するための一般的な意見は、これから作成するGL頂点バッファオブジェクトを使用しているようです。しかし、私はいくつかのタイルが垂直方向の境界を少し超えて、斜めの空中写真を偽造したいことに気づきました。これにより、ブロックの真上にあるものはすべて、タイルで部分的に覆われるようになります。ここでVBOを使用する場合は、タイルマップ全体を一度に描画する必要があります。つまり、後で描画するオブジェクトはすべて、タイルマップの真上に表示されます。
この問題への最も正直なアプローチは何でしょうか?最初にタイルマップを描画し、次にエンティティ(プレーヤー/敵)を描画し、次にエンティティをカバーするように余分な垂直スペースを描画し、最後に両方に表示される効果を描画する必要がありますか?(ショット、爆発など)。しかし、これにより、ショットが地形に覆われないという問題が発生します。順序を変更すると、地形が大規模な爆発を不自然に覆うことになります。または、すべてのビジュアルオブジェクトを並べ替えてトップダウンで描画することもできますが、この特定のケースではテクスチャで並べ替えてもあまり役に立たないため、テクスチャを頻繁に変更する必要があります。
また、エンティティがマップに色をキャストできるように、グリッド内のすべての個々の頂点の色を動的に変更できるようにしたいと思います。私が理解していることから、これを達成する方法は、頂点シェーダーを使用することです。これは正しいです?
編集:最後のこと。画面よりも大きいタイルマップのようなVBOを変換して描画した場合、GLは自動的に見えない顔をカリングしますか、それとも「カメラ」を移動するたびにVBOをリフォームする必要がありますか?