如下一段代码:
// Initialize the names stack
glInitNames();
glPushName(0);
// Draw the Earth
glPushMatrix();
glRGB(0,0,255);
glTranslatef(-100.0f,0.0f,0.0f);
glLoadName(EARTH);
glutSolidSphere(30.0f, 15, 15);

// Draw the Moon
glTranslatef(45.0f, 0.0f, 0.0f);
glRGB(220,220,220);
glPushName(MOON1);         //为什么使用一个push---pop函数对
glutSolidSphere(5.0f, 15, 15);
glPopName();               //为什么使用一个push---pop函数对
glPopMatrix(); // Draw Mars
glRGB(255,0,0);
glPushMatrix();
glTranslatef(100.0f, 0.0f, 0.0f);
glLoadName(MARS);         //为什么不使用一个push---pop函数对
glutSolidSphere(20.0f, 15, 15); // Draw Moon1
glTranslatef(-40.0f, 40.0f, 0.0f);
glRGB(220,220,220);
glPushName(MOON1);           //为什么使用一个push---pop函数对
glutSolidSphere(5.0f, 15, 15);
glPopName();               //为什么使用一个push---pop函数对 // Draw Moon2
glTranslatef(0.0f, -80.0f, 0.0f);
glPushName(MOON2);          //为什么使用一个push---pop函数对
glutSolidSphere(5.0f, 15, 15);
glPopName();               //为什么使用一个push---pop函数对
glPopMatrix();

解决方案 »

  1.   

    名字形成堆栈结构,就可以形成类似的装配结构:
    整车/发动机/气缸总成/活塞你根据这个stack,即便名字重复,比如说,活塞可以用在其他地方,系统中有多个活塞,
    你也可以根据 stack里面记录的名字路径,来判别这个活塞到底是哪一个活塞。所以,stack方法是很先进的。
    ============================================================================
    提问题时标题要简明扼要地说明问题内容,切忌使用"急","求救"之类不能说明问题的标题
    http://alphasun.betajin.com/   遇到问题可以给我发消息,给我发信息时请附带原帖地址
    DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析