2015-05-26 3 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(); 
Смежные вопросы