1

Open GL ES で CSG (Constructive Solid Geometry Modelling) に Goldfeather のアルゴリズムを実装したいと考えています。

2 番目の深度バッファーと、バッファー間の転送 (マージ) 操作が必要です。「デスクトップ」Open GL で glCopyPixels を使用します。

第 1 バッファーから第 2 バッファーへの転送

glViewport(0,0, _viewport.w, _viewport.h);
glRasterPos2f(_viewport.w>>1,0.0F);
glDisable(GL_STENCIL_TEST);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(GL_ALWAYS);
glCopyPixels(0,0,_viewport.w>>1,_viewport.h,GL_DEPTH);

2 番目のバッファーから 1 番目のバッファーへの転送

glViewport(0,0, _viewport.w, _viewport.h);   
glRasterPos2f(0.0f,0.0f);
glCopyPixels(_viewport.w>>1,0,_viewport.w>>1,_viewport.h,GL_DEPTH);

OpenGL ES の glCopyPixels の代用は何ですか?

4

1 に答える 1

0

OpenGL ES で 2 番目の深度バッファーを持つことはできないと思います -- gl.h には、GL_COLOR_ATTACHMENT0 や GL_COLOR_ATTACHMENT1 とは異なり、GL_DEPTH_ATTACHMENT のみが含まれます。私はGoldfeatherのアルゴリズムに精通していませんが、テクスチャをフレームバッファの深度およびカラーレンダバッファアタッチメントポイントにバインドし、カラーバッファへの他の深度アタッチメントで必要なものを描画することにより、2つの深度バッファを持つことを偽造できると思います、そして最後にこれらのテクスチャをシェーダーに渡し、必要な結果を画面に描画して、glCopyPixels 呼び出しをエミュレートします。

于 2013-10-21T19:29:27.097 に答える