フレームバッファのテクスチャとして、レイヤー化された画像 (10 ~ 1000 z 解像度の 3D テクスチャ) を使用したいと考えています。次の方法でフレームバッファのテクスチャを設定します。
glGenTextures(1, &textureName);
glBindTexture(GL_TEXTURE_3D, textureName);
glTexStorage3D(GL_TEXTURE_3D, 1, GL_R32F, width, height, depth);
glBindTexture(GL_TEXTURE_3D, 0);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, textureName, 0);
次に、ジオメトリ シェーダーでレイヤーのジオメトリを作成します。
void main() {
for (int layer = 0; layer < textureDepth; ++layer) {
gl_Layer = layer;
//generate and emit vertices
EndPrimitive();
}
}
テクスチャ深度が小さい場合 (例: 10)、これは機能しているように見えますが、数値が大きい場合は結果が間違っているようです。問題が発生する可能性がある場所はたくさんあるので、これが機能していることを確認したかったのです。
- 私は物事を正しく設定していますか?
- クエリを実行する必要があるレイヤーの数に制限はありますか (
glGetInteger
)? - フレームバッファとして高度に階層化された画像のパフォーマンスに関する経験はありますか?
私の主な問題は、このトピックに関する情報の欠如であることに注意してください。ドキュメントは非常に短く、非キューブ マップ レイヤー イメージの部分はさらに短くなります。このトピック (キューブ マップの問題ではない) をカバーするチュートリアルがあれば幸いです。