Example #1
0
void myinit()
{
	g_iLineList = glGenLists(1);
	glNewList(g_iLineList, GL_COMPILE);
	makeLines();
	glEndList();

	initTexture(&g_iFloorName, g_pFloorTexture);
	g_iFloorList = glGenLists(2);
	glNewList(g_iFloorList, GL_COMPILE);
	makeFloor();
	glEndList();

	initTexture(&g_iSkyName, g_pSkyTexture);
	g_iSkyList = glGenLists(3);
	glNewList(g_iSkyList, GL_COMPILE);
	makeSky();
	glEndList();

	g_iTrackList = glGenLists(4);
	glNewList(g_iTrackList, GL_COMPILE);
	makeTracks();
	glEndList();

	glClearColor(0.0, 0.0, 0.0, 0.0);   // set background color
	glEnable(GL_DEPTH_TEST);            // enable depth buffering
	glShadeModel(GL_SMOOTH);            // interpolate colors during rasterization

	moveCamera();
}
Example #2
0
osg::Group* createModel()
{
    // no database loaded so automatically create Ed Levin Park
    osg::Group* group = new osg::Group;

    // the base and sky subgraphs go to set the earth sky of the
    // model and clear the color and depth buffer for us, by using
    // osg::Depth, and setting their bin numbers to less than 0,
    // to force them to draw before the rest of the scene.

    osg::ClearNode* clearNode = new osg::ClearNode;
    clearNode->setRequiresClear(false); // we've got base and sky to do it.

    // use a transform to make the sky and base move around with the eye point.
    osg::Transform* transform = new MoveEarthySkyWithEyePointTransform;

    // transform's value isn't knowm until in the cull traversal so its bounding
    // volume is can't be determined, therefore culling will be invalid,
    // so switch it off, this causes all our paresnts to switch culling
    // off as well. But don't worry, culling will be back on once underneath
    // this node or any other branch above this transform.
    transform->setCullingActive(false);

    // add the sky and base layer.
    transform->addChild(makeSky());  // bin number -2 so drawn first.
    transform->addChild(makeBase()); // bin number -1 so draw second.      

    // add the transform to the earth sky.
    clearNode->addChild(transform);

    // add to earth sky to the scene.
    group->addChild(clearNode);

    // the rest of the scene is drawn after the base and sky above.
    group->addChild(makeTrees()); // will drop into a transparent, depth sorted bin (1)
    group->addChild(makeTerrain()); // will drop into default bin - state sorted 0
    group->addChild(makeTank()); // will drop into default bin - state sorted 0
    // add the following in the future...
    // makeGliders
    // makeClouds

    return group;
}
Example #3
0
void createCity(char *chemin)
{
	int texId[14]; //A créer en même temps que toutes les variables. La taille depend du nombre de textures
	int i;

	GLUquadricObj* qobj;
	//GLUquadricObj* GLAPIENTRY qobj;

	// allocation d´une description de quadrique
	qobj = gluNewQuadric();
	// la quadrique est pleine
	gluQuadricDrawStyle(qobj, GLU_FILL);
	// les ombrages, s´il y en a, sont doux
	gluQuadricNormals(qobj, GLU_SMOOTH);

	load_textures(chemin, texId); // loading textures

	makeSky(texId[13]); // creating skybox

	glNewList(BORD, GL_COMPILE);
		glBegin(GL_POLYGON);
		glTexCoord2i(1,1);		glVertex3f(-150,-150,0);
		glTexCoord2i(1,0);		glVertex3f(-150,-150,5);
		glTexCoord2i(0,0);		glVertex3f(150,-150,5);
		glTexCoord2i(0,1);      glVertex3f(150,-150,0);
		glEnd();
	glEndList();


    //sol
    glNewList(FLOOR, GL_COMPILE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[0]);

    glColor3f (1,1,1);
    glPushMatrix();
    glBegin(GL_POLYGON);
    glTexCoord2i(1,1);		glVertex3f(150,150,0);
    glTexCoord2i(1,0);		glVertex3f(150,-150,0);
    glTexCoord2i(0,0);		glVertex3f(-150,-150,0);
    glTexCoord2i(0,1);      glVertex3f(-150,150,0);
    glEnd();

    for(i=0;i<4;i++)
    {
    	glRotatef(90, 0, 0, 1);
    	glCallList(BORD);
    }

    glDisable(GL_TEXTURE_2D);
    glPopMatrix();
    glEndList();



    //batiment 1

    glNewList(BAT1, GL_COMPILE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[1]);

    glPushMatrix();
    glTranslatef(20,20,0);

    glBegin(GL_QUADS);

    //4 faces latŽrales
    glTexCoord2i(0,0); glVertex3d(10,10,60);
    glTexCoord2i(0,4); glVertex3d(10,10,0);
    glTexCoord2i(4,4); glVertex3d(0,10,0);
    glTexCoord2i(4,0); glVertex3d(0,10,60);

    glTexCoord2i(0,0); glVertex3d(10,0,60);
    glTexCoord2i(0,4); glVertex3d(10,0,0);
    glTexCoord2i(4,4); glVertex3d(10,10,0);
    glTexCoord2i(4,0); glVertex3d(10,10,60);

    glTexCoord2i(0,0); glVertex3d(0,0,60);
    glTexCoord2i(0,4); glVertex3d(0,0,0);
    glTexCoord2i(4,4); glVertex3d(10,0,0);
    glTexCoord2i(4,0); glVertex3d(10,0,60);

    glTexCoord2i(0,0); glVertex3d(0,10,60);
    glTexCoord2i(0,4); glVertex3d(0,10,0);
    glTexCoord2i(4,4); glVertex3d(0,0,0);
    glTexCoord2i(4,0); glVertex3d(0,0,60);

    //sol
    glTexCoord2i(0,0); glVertex3d(10,10,0);
    glTexCoord2i(0,4); glVertex3d(10,0,0);
    glTexCoord2i(4,4); glVertex3d(0,0,0);
    glTexCoord2i(4,0); glVertex3d(0,10,0);

    //toit
    glTexCoord2i(0,0); glVertex3d(10,0,60);
    glTexCoord2i(0,4); glVertex3d(10,10,60);
    glTexCoord2i(4,4); glVertex3d(0,10,60);
    glTexCoord2i(4,0); glVertex3d(0,0,60);

    glEnd();

    glPopMatrix();

    glDisable(GL_TEXTURE_2D);
    glEndList();



    //batiment 2

    glNewList(BAT2, GL_COMPILE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[2]);

    glPushMatrix();
    glTranslatef(30,-90,0);

    glBegin(GL_QUADS);

    //4 faces latŽrales
    glTexCoord2i(0,0); glVertex3d(15,15,90);
    glTexCoord2i(0,1); glVertex3d(15,15,0);
    glTexCoord2i(1,1); glVertex3d(0,15,0);
    glTexCoord2i(1,0); glVertex3d(0,15,90);

    glTexCoord2i(0,0); glVertex3d(15,0,90);
    glTexCoord2i(0,1); glVertex3d(15,0,0);
    glTexCoord2i(1,1); glVertex3d(15,15,0);
    glTexCoord2i(1,0); glVertex3d(15,15,90);

    glTexCoord2i(0,0); glVertex3d(0,0,90);
    glTexCoord2i(0,1); glVertex3d(0,0,0);
    glTexCoord2i(1,1); glVertex3d(15,0,0);
    glTexCoord2i(1,0); glVertex3d(15,0,90);

    glTexCoord2i(0,0); glVertex3d(0,15,90);
    glTexCoord2i(0,1); glVertex3d(0,15,0);
    glTexCoord2i(1,1); glVertex3d(0,0,0);
    glTexCoord2i(1,0); glVertex3d(0,0,90);

    //sol
    glTexCoord2i(0,0); glVertex3d(15,15,0);
    glTexCoord2i(0,1); glVertex3d(15,0,0);
    glTexCoord2i(1,1); glVertex3d(0,0,0);
    glTexCoord2i(1,0); glVertex3d(0,15,0);

    //toit
    glTexCoord2i(0,0); glVertex3d(15,0,90);
    glTexCoord2i(0,1); glVertex3d(15,15,90);
    glTexCoord2i(1,1); glVertex3d(0,15,90);
    glTexCoord2i(1,0); glVertex3d(0,0,90);

    glEnd();

    glPopMatrix();

    glDisable(GL_TEXTURE_2D);
    glEndList();



    //batiment3

    glNewList(BAT3,GL_COMPILE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[3]);

    glPushMatrix();
    glTranslatef(60,80,0);

    glBegin(GL_QUADS);

    //4 faces latŽrales
    glTexCoord2i(0,0); glVertex3d(30,30,10);
    glTexCoord2i(0,1); glVertex3d(30,30,0);
    glTexCoord2i(1,1); glVertex3d(0,30,0);
    glTexCoord2i(1,0); glVertex3d(0,30,10);

    glTexCoord2i(0,0); glVertex3d(30,0,10);
    glTexCoord2i(0,1); glVertex3d(30,0,0);
    glTexCoord2i(1,1); glVertex3d(30,30,0);
    glTexCoord2i(1,0); glVertex3d(30,30,10);

    glTexCoord2i(0,0); glVertex3d(0,0,10);
    glTexCoord2i(0,1); glVertex3d(0,0,0);
    glTexCoord2i(1,1); glVertex3d(30,0,0);
    glTexCoord2i(1,0); glVertex3d(30,0,10);

    glTexCoord2i(0,0); glVertex3d(0,30,10);
    glTexCoord2i(0,1); glVertex3d(0,30,0);
    glTexCoord2i(1,1); glVertex3d(0,0,0);
    glTexCoord2i(1,0); glVertex3d(0,0,10);

    //sol
    glTexCoord2i(0,0); glVertex3d(30,30,0);
    glTexCoord2i(0,1); glVertex3d(30,0,0);
    glTexCoord2i(1,1); glVertex3d(0,0,0);
    glTexCoord2i(1,0); glVertex3d(0,30,0);

    //toit
    glTexCoord2i(0,0); glVertex3d(30,0,10);
    glTexCoord2i(0,1); glVertex3d(30,30,10);
    glTexCoord2i(1,1); glVertex3d(0,30,10);
    glTexCoord2i(1,0); glVertex3d(0,0,10);

    glEnd();

    glPopMatrix();

    glDisable(GL_TEXTURE_2D);
    glEndList();



    //batiment 4 conique

    glNewList(BAT4, GL_COMPILE);

    GLUquadricObj* quadric = gluNewQuadric();
    gluQuadricTexture(quadric, GLU_TRUE);

    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[10]);

    glPushMatrix();
    glTranslatef(0,-60,0);

    //glColor3f(0.5, 0.35, 0.05);
    gluCylinder(quadric, 5, 5, 40, 100, 100);
    glTranslatef(0,0,30);

    //glColor3f(0.5, 0.35, 0.05);
    gluCylinder(quadric, 5, 10, 30, 100, 100);
    glTranslatef(0, 0, 30);
    gluDisk(quadric,0,10,100,100);


    glPopMatrix();
    glDisable(GL_TEXTURE_2D);
    gluQuadricTexture(quadric, GLU_FALSE);
    glEndList();



    //batiment 5 avec sphere

    glNewList(BAT5, GL_COMPILE);

    GLUquadricObj* quadric2 = gluNewQuadric();
    gluQuadricTexture(quadric2, GLU_TRUE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[11]);

    glPushMatrix();
    glTranslatef(-15,-15,0);

    glColor3f(0.01, 0.56, 0.61);
    gluCylinder(quadric2, 5, 5, 20, 100, 100);
    glTranslatef(0,0,20);

    glColor3f(0.01, 0.56, 0.61);
    gluSphere(quadric2, 10, 100, 100);


    glPopMatrix();
    glDisable(GL_TEXTURE_2D);
    gluQuadricTexture(quadric2, GLU_FALSE);
    glEndList();



    //batiment 6

    glNewList(BAT6, GL_COMPILE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[4]);

    glPushMatrix();
    glTranslatef(-30,20,0);

    glBegin(GL_QUADS);

    //4 faces latŽrales
    glTexCoord2i(0,0); glVertex3d(20,20,70);
    glTexCoord2i(0,2); glVertex3d(20,20,0);
    glTexCoord2i(2,2); glVertex3d(0,20,0);
    glTexCoord2i(2,0); glVertex3d(0,20,70);

    glTexCoord2i(0,0); glVertex3d(20,0,70);
    glTexCoord2i(0,2); glVertex3d(20,0,0);
    glTexCoord2i(2,2); glVertex3d(20,20,0);
    glTexCoord2i(2,0); glVertex3d(20,20,70);

    glTexCoord2i(0,0); glVertex3d(0,0,70);
    glTexCoord2i(0,2); glVertex3d(0,0,0);
    glTexCoord2i(2,2); glVertex3d(20,0,0);
    glTexCoord2i(2,0); glVertex3d(20,0,70);

    glTexCoord2i(0,0); glVertex3d(0,20,70);
    glTexCoord2i(0,2); glVertex3d(0,20,0);
    glTexCoord2i(2,2); glVertex3d(0,0,0);
    glTexCoord2i(2,0); glVertex3d(0,0,70);

    //sol
    glTexCoord2i(0,0); glVertex3d(20,20,0);
    glTexCoord2i(0,2); glVertex3d(20,0,0);
    glTexCoord2i(2,2); glVertex3d(0,0,0);
    glTexCoord2i(2,0); glVertex3d(0,20,0);

    //toit
    glTexCoord2i(0,0); glVertex3d(20,0,70);
    glTexCoord2i(0,2); glVertex3d(20,20,70);
    glTexCoord2i(2,2); glVertex3d(0,20,70);
    glTexCoord2i(2,0); glVertex3d(0,0,70);

    glEnd();

    glPopMatrix();

    glDisable(GL_TEXTURE_2D);
    glEndList();



    //batiment 7
    glNewList(BAT7, GL_COMPILE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[5]);

    glPushMatrix();
    glTranslatef(-70,-60,0);

    glBegin(GL_QUADS);

    //4 faces latŽrales
    glTexCoord2i(0,0); glVertex3d(25,25,5);
    glTexCoord2i(0,1); glVertex3d(25,25,0);
    glTexCoord2i(1,1); glVertex3d(0,25,0);
    glTexCoord2i(1,0); glVertex3d(0,25,5);

    glTexCoord2i(0,0); glVertex3d(25,0,5);
    glTexCoord2i(0,1); glVertex3d(25,0,0);
    glTexCoord2i(1,1); glVertex3d(25,25,0);
    glTexCoord2i(1,0); glVertex3d(25,25,5);

    glTexCoord2i(0,0); glVertex3d(0,0,5);
    glTexCoord2i(0,1); glVertex3d(0,0,0);
    glTexCoord2i(1,1); glVertex3d(25,0,0);
    glTexCoord2i(1,0); glVertex3d(25,0,5);

    glTexCoord2i(0,0); glVertex3d(0,25,5);
    glTexCoord2i(0,1); glVertex3d(0,25,0);
    glTexCoord2i(1,1); glVertex3d(0,0,0);
    glTexCoord2i(1,0); glVertex3d(0,0,5);

    //sol
    glTexCoord2i(0,0); glVertex3d(25,25,0);
    glTexCoord2i(0,1); glVertex3d(25,0,0);
    glTexCoord2i(1,1); glVertex3d(0,0,0);
    glTexCoord2i(1,0); glVertex3d(0,25,0);

    //toit
    glTexCoord2i(0,0); glVertex3d(25,0,5);
    glTexCoord2i(0,1); glVertex3d(25,25,5);
    glTexCoord2i(1,1); glVertex3d(0,25,5);
    glTexCoord2i(1,0); glVertex3d(0,0,5);

    glEnd();

    glPopMatrix();

    glDisable(GL_TEXTURE_2D);
    glEndList();



    //batiment 8
    glNewList(BAT8, GL_COMPILE);

    GLUquadricObj* quadric3 = gluNewQuadric();
    gluQuadricTexture(quadric3, GLU_TRUE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[9]);

    glPushMatrix();
    glTranslatef(100, 50, 0);

    glColor3f(0.5, 0.37, 0.05);
    gluCylinder(quadric3, 10, 10, 90, 100, 100);
    glTranslatef(0, 0, 90);
    gluDisk(quadric3,0,10,100,100);

    glPopMatrix();
    glDisable(GL_TEXTURE_2D);
    gluQuadricTexture(quadric3, GLU_FALSE);
    glEndList();



    //batiment 9
    glNewList(BAT9, GL_COMPILE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[6]);

    glPushMatrix();
    glTranslatef(-100,-120,0);

    glBegin(GL_QUADS);

    //4 faces latŽrales
    glTexCoord2i(0,0); glVertex3d(18,18,120);
    glTexCoord2i(0,1); glVertex3d(18,18,0);
    glTexCoord2i(1,1); glVertex3d(0,18,0);
    glTexCoord2i(1,0); glVertex3d(0,18,120);

    glTexCoord2i(0,0); glVertex3d(18,0,120);
    glTexCoord2i(0,1); glVertex3d(18,0,0);
    glTexCoord2i(1,1); glVertex3d(18,18,0);
    glTexCoord2i(1,0); glVertex3d(18,18,120);

    glTexCoord2i(0,0); glVertex3d(0,0,120);
    glTexCoord2i(0,1); glVertex3d(0,0,0);
    glTexCoord2i(1,1); glVertex3d(18,0,0);
    glTexCoord2i(1,0); glVertex3d(18,0,120);

    glTexCoord2i(0,0); glVertex3d(0,18,120);
    glTexCoord2i(0,1); glVertex3d(0,18,0);
    glTexCoord2i(1,1); glVertex3d(0,0,0);
    glTexCoord2i(1,0); glVertex3d(0,0,120);

    //sol
    glTexCoord2i(0,0); glVertex3d(18,18,0);
    glTexCoord2i(0,1); glVertex3d(18,0,0);
    glTexCoord2i(1,1); glVertex3d(0,0,0);
    glTexCoord2i(1,0); glVertex3d(0,18,0);

    //toit
    glTexCoord2i(0,0); glVertex3d(18,0,120);
    glTexCoord2i(0,1); glVertex3d(18,18,120);
    glTexCoord2i(1,1); glVertex3d(0,18,120);
    glTexCoord2i(1,0); glVertex3d(0,0,120);

    glEnd();
    glPopMatrix();
    glDisable(GL_TEXTURE_2D);
    glEndList();



    //batiment 10

    glNewList(BAT10, GL_COMPILE);

    GLUquadricObj* quadric4 = gluNewQuadric();
    gluQuadricTexture(quadric4, GLU_TRUE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[7]);

    glPushMatrix();
    glTranslatef(100,-60,0);

    gluCylinder(quadric4, 30, 30, 10, 100, 100);
    glTranslatef(0,0,10);
	gluDisk(quadric4,0,30,100,100);

    gluSphere(quadric4, 10, 100, 100);

    glPopMatrix();
    glDisable(GL_TEXTURE_2D);
    gluQuadricTexture(quadric4, GLU_FALSE);
    glEndList();



    //batiment 11
    glNewList(BAT11, GL_COMPILE);

    GLUquadricObj* quadric5 = gluNewQuadric();
    gluQuadricTexture(quadric5, GLU_TRUE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[8]);

    glPushMatrix();
    glTranslatef(-110,80,0);

    gluCylinder(quadric5, 10, 0, 95, 100, 100);

    glPopMatrix();
    glDisable(GL_TEXTURE_2D);
    gluQuadricTexture(quadric5, GLU_FALSE);
    glEndList();



    //batiment 12 sphere

    glNewList(BAT12, GL_COMPILE);

    GLUquadricObj* quadric6 = gluNewQuadric();
    gluQuadricDrawStyle(quadric6, GLU_FILL);
    gluQuadricNormals(quadric6, GLU_SMOOTH);
    gluQuadricTexture(quadric6, GLU_TRUE);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D,texId[12]);
	glColor3f(1, 1, 1);
    glPushMatrix();
    glTranslatef(-90,-60,0);
    glTranslatef(0,0,5);

    gluSphere(quadric6, 20, 100, 100);

    glPopMatrix();
    glDisable(GL_TEXTURE_2D);
    gluQuadricTexture(quadric6, GLU_FALSE);
    glEndList();


    //city
	glNewList(CITY, GL_COMPILE); // declaration de la liste City

		glCallList(SKY);
		glCallList(FLOOR);
		glCallList(BAT1);
		glCallList(BAT2);
		glCallList(BAT3);
		glCallList(BAT4);
		glCallList(BAT5);
		glCallList(BAT6);
		glCallList(BAT7);
		glCallList(BAT8);
		glCallList(BAT9);
		glCallList(BAT10);
		glCallList(BAT11);
		glCallList(BAT12);
	glEndList();
}