示例#1
0
void KeyCallback(unsigned char key, int x, int y)
{
    switch(key) {
        case 's': {
            //
            // Take a screenshot, and save as screenshot.jpg
            //
            STImage* screenshot = new STImage(gWindowSizeX, gWindowSizeY);
            screenshot->Read(0,0);
            screenshot->Save("screenshot.jpg");
            delete screenshot;
        }
            break;
        case 'r':
            resetCamera();
            break;
        case 'u':
            resetUp();
            break;
        case 'm': // switch between the mesh you create and the mesh from file
            mesh = !mesh;
            break;
            //case 'p': //switch proxy type between sphere and cylinder
            //	proxyType=!proxyType;
            //	if(proxyType) gTriangleMesh->CalculateTextureCoordinatesViaSphericalProxy();
            //	else gTriangleMesh->CalculateTextureCoordinatesViaCylindricalProxy(-1,1,0,0,1);
            //	break;
        case 'n': // switch between normalMapping and displacementMapping
            normalMapping = !normalMapping;
            break;
        case 'f': // switch between smooth shading and flat shading
            smooth = !smooth;
            break;
            //case 'l': // do loop subdivision
            //    if(mesh){
            //        gTriangleMesh->LoopSubdivide();
            //		if(proxyType) gTriangleMesh->CalculateTextureCoordinatesViaSphericalProxy();
            //		else gTriangleMesh->CalculateTextureCoordinatesViaCylindricalProxy(-1,1,0,0,1);
            //    }
            //    else
            //        gManualTriangleMesh->LoopSubdivide();
            //    break;
            //case 'w':
            //    gTriangleMesh->Write("output.obj");
            //    break;
        case 'a':
            for(unsigned int id=0;id<gTriangleMeshes.size();id++)
                gTriangleMeshes[id]->mDrawAxis=!gTriangleMeshes[id]->mDrawAxis;
            if(gManualTriangleMesh!=0)
                gManualTriangleMesh->mDrawAxis=!gManualTriangleMesh->mDrawAxis;
            break;
        case 'q':
            exit(0);
        default:
            break;
    }
    
    glutPostRedisplay();
}
示例#2
0
void KeyCallback(unsigned char key, int x, int y)
{
    // TO DO: Any new key press events must be added to this function

    switch(key) {
    case 's': {
            //
            // Take a screenshot, and save as screenshot.jpg
            //
            STImage* screenshot = new STImage(gWindowSizeX, gWindowSizeY);
            screenshot->Read(0,0);
            screenshot->Save("../../data/images/screenshot.jpg");
            delete screenshot;
        }
        break;
    case 'r':
        resetCamera();
        break;
    case 'u':
        resetUp();
        break;
    case 'm': // switch between the mesh you create and the mesh from file
        mesh = !mesh;
        break;
    case 'n': // switch between normalMapping and displacementMapping
        normalMapping = !normalMapping;
        break;
    case 't':
        createSphere();
        break;
    // TO:DO do loop subdivision, uncomment this code
    // modify it so that it works with your sphere
    // simply make sure you are calling the functions
    // on the correct mesh.
    //---------------------------------
    case 'l': 
        if(mesh){
            for(int i=0; i<gTriangleMeshes.size(); i++){
                gTriangleMeshes[i]->LoopSubdivide();
                if(proxyType) 
                    gTriangleMeshes[i]->CalculateTextureCoordinatesViaSphericalProxy();
                //else 
                //    gTriangleMeshes[i]->CalculateTextureCoordinatesViaCylindricalProxy();
            }            
           break;
    case 'f': // switch between smooth shading and flat shading
        smooth = !smooth;
        break;
    case 'w':
        for(unsigned int id=0;id<gTriangleMeshes.size();id++)
            gTriangleMeshes[id]->Write("output.obj");
        break;
    case 'a':
        for(unsigned int id=0;id<gTriangleMeshes.size();id++)
            gTriangleMeshes[id]->mDrawAxis=!gTriangleMeshes[id]->mDrawAxis;
        if(gManualTriangleMesh!=0)
            gManualTriangleMesh->mDrawAxis=!gManualTriangleMesh->mDrawAxis;
        break;
	case 'q':
		exit(0);
    default:
        break;
    }

    glutPostRedisplay();
}
}