私はOpenGLで2D(実際には2.5D)アイソメトリックゲームを書いています。非常に複雑になる可能性のあるタイルの並べ替えを回避するために、ある種の深度バッファーをシミュレートしようとしています。タイルごとに2つの画像があります。1つは色情報、もう1つは深度情報です。
画像1:http : //dl.dropbox.com/u/91457585/depth_buffer_test.png
最初のアプローチとして、私はこれらの写真を作成しました。アイデアは、それらを互いに重ねて描画し、シェーダーを使用して深度テストを実行することです。この場合、私が知っていることはあまり意味がありませんが、それが技術的に可能かどうかを確認するための最初のアプローチにすぎません。
だから今私の問題に!
以下に、シェーダーのコードを示します。フレームバッファの深度情報をオブジェクトの深度情報と比較することになっています。しかし、それはうまくいかないようで、今私はどこかでこれが私がしたように不可能であると読んだ。
リスト:
#version 130
uniform sampler2D colorMap;
uniform sampler2D zMap;
uniform float level;
out vec4 gs_FragColor[ 2 ];
void main(void) {
float z = texture2D( zMap, gl_TexCoord[0].st ).r;
if ( z > gs_FragColor[ 1 ].r ){
gs_FragColor[ 1 ] = vec4( z, 0, 0, 1 );
gs_FragColor[ 0 ] = texture2D( colorMap, gl_TexCoord[0].st ).rgba;
}
}
では、デプスバッファをシミュレートするためのより良い方法はありますか?たぶん、実際のデプスバッファに書き込むことによって?