C++ 如何在OpenGL/C++;

C++ 如何在OpenGL/C++;,c++,opengl,boolean,csg,C++,Opengl,Boolean,Csg,我想用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

我想用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)
我花了很多时间来实现一个简单的布尔运算,但我不明白

我想要这样的东西:


OpenGL的模具缓冲区在帧缓冲区的二维像素网格上运行。OpenGL本身没有对象或场景的概念。它只是画点、线和三角形。因此,仅使用OpenGL不可能实现真正的CSG。然而,有一些技术通过模具缓冲区操作来模拟CSG,但它们相当复杂。谷歌为“模具缓冲区中的OpenGL CSG”找到了一些1990年中期ies关于这个主题的论文