質問

OpenGLを使っていくつかのオブジェクトをステンシルしたい。

glClear(GL_STENCIL_BUFFER_BIT);
glColorMask(false, false, false, false);
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_EQUAL, 0, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
glDisable(GL_DEPTH_TEST);
glColor4f(0,0,1,1.0f);

gl::draw(mVBO); //a sphere

glEnable(GL_DEPTH_TEST);
glColorMask(true, true, true, true);
glStencilFunc(GL_ALWAYS,0, 1);
glStencilOp(GL_REPLACE,GL_KEEP, GL_ZERO);

mTexture.enableAndBind();
gl::drawCube(Vec3f(0,3,0),Vec3f(13,13,13) );

glDisable(GL_STENCIL_TEST)
.

私は単純なブール操作を達成するために何時間も試みました、しかし私はそれを手に入れてはいけません。

私はこのようなものが欲しい:

href="https://upload.wikimedia.org/wikipedia.org/wikipedia/commons/thumb/8/86/boolean_difference.png/275px-boolean_difference.png" REL="nofollowNoreferrer">  img

役に立ちましたか?

解決

他のヒント

OpenGLのステンシルバッファは、フレームバッファの2次元ピクセルグリッド上で動作します。OpenGL自体には、オブジェクトやシーンの概念はありません。それは単に点、線と三角形を描くだけです。そのため、OpenGLだけで実際のCSGは不可能です。ただし、Stencilバッファ操作でCSGをエミュレートするテクニックがありますが、非常に複雑です。1990年代半ばの論文を主題に見つけるために、「ステンシルバッファーのOpenGL CSG」のためのGoogle。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top