标红的为关键代码
glEnable(GL_STENCIL_TEST);
glClearStencil(0);
glClear(GL_COLOR_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
glStencilFunc(GL_NEVER,0,0);
glStencilOp(GL_INCR,GL_INCR,GL_INCR);
...
glStencilFunc(GL_NOTEQUAL,1,1);
glStencilOp(GL_KEEP,GL_KEEP,GL_KEEP);
...
GLfloat angle=0.0f;
GLfloat radius=1.01f;
glEnable(GL_STENCIL_TEST);
glClearStencil(0);
glClear(GL_COLOR_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
glColor3f(1.0f,0.0f,1.0f);
glStencilFunc(GL_NEVER,0,0);
glStencilOp(GL_INCR,GL_INCR,GL_INCR);
glBegin(GL_LINE_STRIP);
for (angle=0.0f;angle<400.0f;angle+=0.1)
{
glVertex2f(radius*cos(angle),radius*sin(angle));
radius*=1.002;
}
glEnd();
glColor3f(1.0f,0.0f,0.0f);
glStencilFunc(GL_NOTEQUAL,1,1);
glStencilOp(GL_KEEP,GL_KEEP,GL_KEEP);
glRectf(x,y,x+RectSize,y-RectSize);
![](https://img-my.csdn.net/uploads/201310/22/1382429175_9372.png)