今回は今までの総合しての解決編になります。
デプスとステンシルを1つのテクスチャでOKとし、
さらにNVIDIAとAMDと双方で問題なく動く、という解法になります。
デプスとステンシルを1つのテクスチャでOKとし、
さらにNVIDIAとAMDと双方で問題なく動く、という解法になります。
■実装コード
やはりテクスチャの作成がポイントでした。
[cpp]
glTexImage2D(
GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8_EXT,
TEXTURE_WIDTH, TEXTURE_HEIGHT, 0,
GL_DEPTH_STENCIL_EXT, GL_UNSIGNED_INT_24_8_EXT, 0 );
[/cpp]
内部フォーマットに D24S8の指定を行い、
ピクセルフォーマットとして、GL_DEPTH_STENCIL_EXTを設定
これに対応する型として GL_UNSIGNED_INT_24_8_EXT を設定
この組み合わせがすべてを解決してくれました。
このデプステクスチャがうまくいったので、
書いた値をファイルに書き出してみました。
こんな感じに記録されており、何らかの値がかかれているのがわかります。
値はちょっとわからないですが、形状からおおむね正しくデプステクスチャに書き込んでいるものと推測できます。
取得する際にはこんな感じで。
GL_DEPTH_STENCIL_EXT | GL_UNSIGNED_INT_24_8_EXT |
GL_DEPTH_COMPONENT | GL_UNSIGNED_INT |
組み合わせを間違えるとうまく値がとれません。
デプス確認するだけなら、下段の書き出し方法のほうが見やすいかも。