1

我想用 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)

我尝试了这么多小时来实现一个简单的布尔运算,但我不明白。

我想要这样的东西:

图像

4

1 回答 1

2

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

于 2012-03-08T19:50:58.473 回答