2015-05-26 67 views
-2

我想画两个对象,当我按下一个按钮只显示一个。当我再次按下来显示下一个。如何一次显示一个对象?

GLUquadricObj *newQuad = gluNewQuadric(); 
glClear(GL_COLOR_BUFFER_BIT); 

glLoadIdentity(); 
glColor3f(1.0,0.0,0.0); 
glRotatef(50,1,0,0); 

glPushMatrix(); 
    glTranslatef(-200,80,0); 
    gluQuadricDrawStyle(newQuad,GLU_LINE); 
gluSphere(newQuad,30,30,10); 
glPopMatrix(); 

glPushMatrix(); 
glTranslatef(-130, 80, 0.0); 
gluQuadricDrawStyle(newQuad,GLU_LINE); 
gluCylinder(newQuad,20,20,60,20,10); 
glPopMatrix();      //cylinder 

glPushMatrix(); 
glTranslatef(-60, 80, 0); 
gluQuadricDrawStyle(newQuad,GLU_LINE); 
gluCylinder(newQuad,20,0,60,20,10); //cone 
glPopMatrix(); 

这是C++

+1

解释你尝试过什么,什么是您的具体困难。 –

+0

如果您显示代码,则应该标记语言(帮助人们查找问题并且还会影响语法高亮显示)。这是C还是C++? – crashmstr

回答

0

创建一个布尔变量,当你要显示一个对象将其设置为true。发生输入时,将变量从true翻转为false,反之亦然。

//Variable 
boolean showOneObject; 

//Constructor 
public MyClass() 
{ 
    //... 
    showOneObject = false; 
} 

//Inside input 
public void input() 
{ 
    //Flip variable 
    showOneObject = !showOneObject; 
} 

现在,当您绘制做到这一点

//If showOneObject == false, draw first object, otherwise only the second one 
if (!showOneObject) 
{ 
    glPushMatrix(); 
    glTranslatef(-130, 80, 0.0); 
    gluQuadricDrawStyle(newQuad,GLU_LINE); 
    gluCylinder(newQuad,20,20,60,20,10); 
    glPopMatrix();  //cylinder 
}     

glPushMatrix(); 
glTranslatef(-60, 80, 0); 
gluQuadricDrawStyle(newQuad,GLU_LINE); 
gluCylinder(newQuad,20,0,60,20,10); //cone 
glPopMatrix();