如何在OpenGL / C ++中创建构造实体几何

时间:2012-03-08 19:20:23

标签: 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); //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)

我花了很多时间来实现一个简单的布尔操作,但是我没理解。

我想要这样的事情:

img

3 个答案:

答案 0 :(得分:2)

OpenGL的模板缓冲区在帧缓冲区的二维像素网格上运行。 OpenGL本身没有对象或场景的概念。它只是绘制点,线和三角形。因此,只有OpenGL才能实现真正的CSG。但是,有些技术可以模拟带有模板缓冲区操作的CSG,但它们非常复杂。 Google为“模板缓冲区中的OpenGL CSG”找到了一些关于这个主题的1990年代中期的论文。

答案 1 :(得分:1)

我建议不要重新发明the wheel

答案 2 :(得分:0)

尝试sgCore库 - http://www.geometros.com/sgcore/review.htm 非常强大和强大的库