예제 #1
0
void Robot::render(float xPos, float yPos, float zPos)
{
    glPushMatrix();
        glTranslatef(xPos, yPos, zPos);	// move to (0, 0, -30)
        // draw head and torso parts
	    renderHead(0.0f, 3.5f, 0.0f);
        renderTorso(0.0f, 0.0f, 0.0f);

	    // move the left arm away from the torso and rotate it to give "walking" effect
	    glPushMatrix();
		    glTranslatef(0.0f, -0.5f, 0.0f);
		    glRotatef(m_armAngles[LEFT], 1.0f, 0.0f, 0.0f);
		    renderArm(2.0f, 0.0f, -0.0f);
	    glPopMatrix();

	    // move the right arm away from the torso and rotate it to give "walking" effect
	    glPushMatrix();
		    glTranslatef(0.0f, -0.5f, 0.0f);
		    glRotatef(m_armAngles[RIGHT], 1.0f, 0.0f, 0.0f);
		    renderArm(-2.0f, 0.0f, -0.0f);
	    glPopMatrix();

	    // move the left leg away from the torso and rotate it to give "walking" effect
	    glPushMatrix();
		    glTranslatef(0.0f, -0.5f, 0.0f);
		    glRotatef(m_legAngles[LEFT], 1.0f, 0.0f, 0.0f);
		    renderLeg(-1.0f, -5.0f, -0.5f);
	    glPopMatrix();

	    // move the right leg away from the torso and rotate it to give "walking" effect
	    glPushMatrix();
		    glTranslatef(0.0f, -0.5f, 0.0f);
		    glRotatef(m_legAngles[RIGHT], 1.0f, 0.0f, 0.0f);
		    renderLeg(1.0f, -5.0f, -0.5f);
	    glPopMatrix();
    glPopMatrix();
}
/*
 화면그림
 */
void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	
	glMatrixMode(GL_MODELVIEW);
	
	drawCage();
	
	for (int i = 0; i < 5; i++) {
		drawObject(stObj[i]);
	}
	
	//여기서부터 팔 그림
	
	drawArmBand();
	glTranslatef(armData.x, (LARGE_CUBE_SIZE /2)+0.5, armData.z);
	renderArm(&band);
	glRotatef(45,0,1,0);
	renderArm(&hand);
	
	glPushMatrix();
		renderArm(&claw1);
		renderArm(&claw5);
	glPopMatrix();
	
	glPushMatrix();
		renderArm(&claw2);
		renderArm(&claw6);
	glPopMatrix();
	
	glPushMatrix();
		renderArm(&claw3);
		renderArm(&claw7);
	glPopMatrix();
	
	glPushMatrix();
		renderArm(&claw4);
		renderArm(&claw8);
	glPopMatrix();
	
	
	if (armData.visible == VISIBLE) {
		glTranslatef(0,-0.5,0);
		glRotatef(-45,0,1,0);
		renderArm(&hanggedObject);
	}
	//glutPostRedisplay();
	glutSwapBuffers();
	
}
void display(void)
{
    glViewport(0,0,(GLsizei)WINDOW_WIDTH,(GLsizei)WINDOW_HEIGHT);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(40,(GLfloat)WINDOW_WIDTH/(GLfloat)WINDOW_HEIGHT, 1, 100);
    gluLookAt(0,15, 20, 0, 0, 0, 0, 1, 0);

    int i;
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glMatrixMode(GL_MODELVIEW);

    init_light();
    drawCage();

    for (i = 0; i < 5; i++) {
        drawObject(stObj[i]);
    }

    drawArmBand();
    glLoadIdentity();
    glTranslatef(armData.x, (LARGE_CUBE_SIZE /2)+0.5, armData.z);
    renderArm(&band);
    glRotatef(45,0,1,0);
    renderArm(&hand);

    glPushMatrix();
    renderArm(&claw1);
    renderArm(&claw5);
    glPopMatrix();

    glPushMatrix();
    renderArm(&claw2);
    renderArm(&claw6);
    glPopMatrix();

    glPushMatrix();
    renderArm(&claw3);
    renderArm(&claw7);
    glPopMatrix();

    glPushMatrix();
    renderArm(&claw4);
    renderArm(&claw8);
    glPopMatrix();


    if (armData.visible == VISIBLE) {
        glTranslatef(0,-0.5,0);
        glRotatef(-45,0,1,0);
        renderArm(&hanggedObject);
    }

    glPushAttrib(GL_TRANSFORM_BIT // to backup & restore "current matrix mode"
                 | GL_ENABLE_BIT);	// to backup & restore "depth test" and "lighting" status
    glDisable(GL_DEPTH_TEST);
    glDisable(GL_LIGHTING);
    glMatrixMode(GL_PROJECTION);
    glPushMatrix();	// not to mess up the projection matrix...
    glLoadIdentity();
    glOrtho(0, WINDOW_WIDTH, 0, WINDOW_HEIGHT, -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();	// not to mess up the modelview matrix...
    glLoadIdentity();
    {
        char	buf[128];
        int		i;
        sprintf(buf, "claw position: (%f, %f, %f)", armData.x, armData.y ,armData.z);
        glColor3f(1,1,1);
        glRasterPos3f(10, 10, 0);
        for(i = 0 ; i < strlen(buf) ; i++)
        {
            glutBitmapCharacter(GLUT_BITMAP_9_BY_15, buf[i]);
        }
    }
    glPopMatrix();
    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    glPopAttrib();


    glViewport(638,0,150,150);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(40,150/150,1, 100);
    //glOrtho(, 2.0, -2, 2, 1, 10);
    gluLookAt(armData.x,armData.y,armData.z, armData.x,-6,armData.z, 0, 0, -1);

    glMatrixMode(GL_MODELVIEW);

    init_light();
    drawCage();

    for (i = 0; i < 5; i++) {
        drawObject(stObj[i]);
    }

    drawArmBand();
    glLoadIdentity();
    glTranslatef(armData.x, (LARGE_CUBE_SIZE /2)+0.5, armData.z);
    renderArm(&band);
    glRotatef(45,0,1,0);
    renderArm(&hand);

    glPushMatrix();
    renderArm(&claw1);
    renderArm(&claw5);
    glPopMatrix();

    glPushMatrix();
    renderArm(&claw2);
    renderArm(&claw6);
    glPopMatrix();

    glPushMatrix();
    renderArm(&claw3);
    renderArm(&claw7);
    glPopMatrix();

    glPushMatrix();
    renderArm(&claw4);
    renderArm(&claw8);
    glPopMatrix();


    if (armData.visible == VISIBLE) {
        glTranslatef(0,-0.5,0);
        glRotatef(-45,0,1,0);
        renderArm(&hanggedObject);
    }


    glutSwapBuffers();

}