C 如何在立方体顶部打洞,即对对象进行布尔运算?

C 如何在立方体顶部打洞,即对对象进行布尔运算?,c,opengl,C,Opengl,由于我是OpenGL新手,所以我想对实体对象执行操作,我使用了模具,但无法获得预期的输出。有人能帮忙吗 代码: void display(void) { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glScalef(zx,zy,zz); glRotatef(xrot,1.0,0.0,0.0); glRotatef(yrot,0.0,1.0,0.0); glMatrixMode(GL_PROJECTION)

由于我是OpenGL新手,所以我想对实体对象执行操作,我使用了模具,但无法获得预期的输出。有人能帮忙吗

代码:

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glScalef(zx,zy,zz);
glRotatef(xrot,1.0,0.0,0.0);
glRotatef(yrot,0.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);

glEnable(GL_DEPTH);
glEnable(GL_STENCIL_TEST);
glColorMask(false,false,false,false);
glStencilOp(GL_REPLACE,1,1);
glStencilFunc(GL_EQUAL,1,1);
//  glRenderMode(GL_FLAT||GL_PROJECTION);

GLUquadricObj *quadratic;
    quadratic = gluNewQuadric();
    glutSolidCylinder(rtri,.50,15,15);

    glColorMask(true,true,true,true);
    glStencilFunc(GL_NOTEQUAL,1,1);
    glStencilOp(GL_KEEP,GL_KEEP,GL_KEEP);
    glBegin(GL_QUADS);

//code for cube!!




   glFlush();
  glutSwapBuffers();

   }

Dupelicate:?你也许应该包括一个屏幕截图。还要注意的是,模具缓冲区,当然,是一个图像空间的东西。实心几何体的布尔运算符通常是对象空间。我基本上想提供对象上的布尔运算。我该怎么做?我很努力,但我做不到这并不容易。布尔运算需要一个内部和外部。在OpenGL中,对象仅表示为面。没有内部或外部。它们甚至不需要连接。所以这是你必须弄清楚的第一件事。然后它取决于您想要支持的对象和操作的类型。通常,您需要找到相交线并适当地切割面。如果对象具有隐式表示(对于立方体或球体非常容易),大多数布尔运算都会简化为简单的数学运算,如乘法或min。