示例#1
0
// initialisation d'openGL
void initialisation (void) {
    // modèle de rendu
    glShadeModel(GL_SMOOTH);	

    // couleur de l'arrière-plan
    glClearColor (1.0, 1.0, 1.0, 1.0);

    // activer les etats openGL
    glEnable(GL_NORMALIZE);
    glEnable(GL_LIGHTING);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_FOG);

    // fonction de profondeur
    glDepthFunc(GL_LEQUAL);

    // amélioration de la perspective
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

    glLightModeli( GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE );
    glLightModeli( GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE );  // two-side mode in openGL
    glEnable( GL_VERTEX_PROGRAM_TWO_SIDE );             // two-side mode in GLSL
    glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);

    // charger les textures
    chargerTextures();
}
示例#2
0
文件: main.cpp 项目: gravufo/INF2705
void initialisation()
{
	// donner la couleur de fond
	glClearColor( 0.7, 0.3, 0.0, 1.0 );

	// activer les etats openGL
	glEnable( GL_NORMALIZE );
	glEnable( GL_DEPTH_TEST );

	chargerTextures();

	// charger les nuanceurs
	chargerNuanceurs();
}
示例#3
0
////////////////////////////////////////////////////////////////////////
///
/// @fn void Modele3D::charger( const std::string& nomModele, const std::string& nomFichier )
///
/// Cette fonction charge un modèle 3D à partir d'un fichier supporté
/// par la librairie 'assimp'. Les textures OpenGL afférentes sont
/// également chargées.
///
/// @param[in] nomFichier : nom du fichier modèle (normalement .mtl)
///
/// @return Aucune.
///
////////////////////////////////////////////////////////////////////////
bool Modele3D::charger( const std::string& nomFichier )
{
	if(!utilitaire::fichierExiste(nomFichier))
	{
		utilitaire::afficherErreur("Fichier du modele "+nomFichier+" Inexistant");
		return false;
	}
	// Construire l'objet scene
	const aiScene* scene = importer_.ReadFile(nomFichier, aiProcessPreset_TargetRealtime_MaxQuality);

	if (scene==NULL) {
		utilitaire::afficherErreur("Impossible de charger l'objet 3d!");
		return false;
	}

	scene_ = scene;

	// Charger les textures
	chargerTextures();
    return true;
}
示例#4
0
文件: main.cpp 项目: sekouzed/echec3D
void DrawPlateau() {

    glColor3f(1.0,1.0,1.0);
    glClearColor (1.0,1.0,1.0,1.0);
    glEnable(GL_TEXTURE_2D);
    chargerTextures(0,"texture/sombre.tga");
    chargerTextures(1,"texture/wood_wide1.tga");
    glBindTexture(GL_TEXTURE_2D, aTexture[0].texID);

    //les bords superieur
    glBegin(GL_QUADS);
    glTexCoord2i(1,1);
    glVertex3f(-1.0,0.0,-1.0); //a  ----> 1point de la grille
    glTexCoord2i(0,1);
    glVertex3f(-1.058,0.0,-1.058); //A
    glTexCoord2i(0,0);
    glVertex3f(-1.058,0.0,1.058); //B
    glTexCoord2i(1,0);
    glVertex3f(-1.0,0.0,1.0);//b  ----> 2point de la grille

    glTexCoord2i(1,1);
    glVertex3f(-1.0,0.0,1.0);//b
    glTexCoord2i(0,1);
    glVertex3f(-1.058,0.0,1.058);//B
    glTexCoord2i(0,0);
    glVertex3f(1.058,0.0,1.058);//C
    glTexCoord2i(1,0);
    glVertex3f(1.0,0.0,1.0);//c  ----> 3point de la grille

    glTexCoord2i(1,1);
    glVertex3f(1.0,0.0,1.0);//c
    glTexCoord2i(0,1);
    glVertex3f(1.058,0.0,1.058);//C
    glTexCoord2i(0,0);
    glVertex3f(1.058,0.0,-1.058);//D
    glTexCoord2i(1,0);
    glVertex3f(1.0,0.0,-1.0);//d

    glTexCoord2i(1,1);
    glVertex3f(1.0,0.0,-1.0);//d  ----> 4point de la grille
    glTexCoord2i(0,1);
    glVertex3f(1.058,0.0,-1.058);//D
    glTexCoord2i(0,0);
    glVertex3f(-1.058,0.0,-1.058);//A
    glTexCoord2i(1,0);
    glVertex3f(-1.0,0.0,-1.0); //a
    glEnd();

    //les bords lateral
    glBegin(GL_QUADS);
    glTexCoord2i(1,1);
    glVertex3f(-1.058,0.0,-1.058);//A
    glTexCoord2i(0,1);
    glVertex3f(-1.058,-0.02,-1.058); //A2
    glTexCoord2i(0,0);
    glVertex3f(-1.058,-0.02,1.058); //B2
    glTexCoord2i(1,0);
    glVertex3f(-1.058,0.0,1.058);//B

    glTexCoord2i(1,1);
    glVertex3f(-1.058,0.0,1.058);//B
    glTexCoord2i(0,1);
    glVertex3f(-1.058,-0.02,1.058);//B2
    glTexCoord2i(0,0);
    glVertex3f(1.058,-0.02,1.058);//C2
    glTexCoord2i(1,0);
    glVertex3f(1.058,0.0,1.058);//C

    glTexCoord2i(1,1);
    glVertex3f(1.058,0.0,1.058);//C
    glTexCoord2i(0,1);
    glVertex3f(1.058,-0.02,1.058);//C2
    glTexCoord2i(0,0);
    glVertex3f(1.058,-0.02,-1.058);//D2
    glTexCoord2i(1,0);
    glVertex3f(1.058,0.0,-1.058);//D

    glTexCoord2i(1,1);
    glVertex3f(1.058,0.0,-1.058);//D
    glTexCoord2i(0,1);
    glVertex3f(1.058,-0.02,-1.058);//D2
    glTexCoord2i(0,0);
    glVertex3f(-1.058,-0.02,-1.058); //A2
    glTexCoord2i(1,0);
    glVertex3f(-1.058,0.0,-1.058);  //A
    glEnd();

    if(reflet) {
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        glColor4f(1.0,1.0,1.0,0.5);
        glClearColor (1.0,1.0,1.0,0.5);
    }

    //la face posterieur
    glBegin(GL_QUADS);
    glTexCoord2i(1,1);
    glVertex3f(-1.058,-0.02,-1.058);
    glTexCoord2i(0,1);
    glVertex3f(-1.058,-0.02,1.058);
    glTexCoord2i(0,0);
    glVertex3f(1.058,-0.02,1.058);
    glTexCoord2i(1,0);
    glVertex3f(1.058,-0.02,-1.058);
    glEnd();

    DrawGrille();

    if(reflet) {
        glDisable(GL_BLEND);
        glColor3f(1.0,1.0,1.0);
        glClearColor (1.0,1.0,1.0,1.0);
    }


    DrawSky();


    glDeleteTextures(1, &aTexture[0].texID);
    glDeleteTextures(1, &aTexture[1].texID);


    glDisable(GL_TEXTURE_2D);

//le plan de pojection de l'ombre

    vfloor[0][0]=-1.058;
    vfloor[0][1]=0.0001;
    vfloor[0][2]=-1.058;
    vfloor[1][0]=-1.058;
    vfloor[1][1]=0.0001;
    vfloor[1][2]=1.058;
    vfloor[2][0]=1.058;
    vfloor[2][1]=0.0001;
    vfloor[2][2]=1.058;
    vfloor[3][0]=1.058;
    vfloor[3][1]=0.0001;
    vfloor[3][2]=-1.058;

}
示例#5
0
int main(int argc, char *argv[])
{
    SDL_Event event;
    const Uint32 time_per_frame = 1000/FPS;
    unsigned int width = LARGEUR_FENETRE;
    unsigned int height = HAUTEUR_FENETRE;

    Uint32 last_time,current_time,elapsed_time; //for time animation
    Uint32 start_time,stop_time; //for frame limit

    SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);
    atexit(stop);
    /* playsound("alig.mp3"); --------------------------------- MUSIC */
    SDL_WM_SetCaption("Brutal Gore", NULL);
    SDL_SetVideoMode(width, height, 32, SDL_OPENGL);
    //initFullScreen(&width,&height);

    glMatrixMode( GL_PROJECTION );
    glLoadIdentity( );
    gluPerspective(70,(double)width/height,0.001,1000);

    glEnable(GL_DEPTH_TEST);
    glEnable(GL_TEXTURE_2D);

    chargerTextures();

    camera = new FreeFlyCamera(Vector3D(0,0,2));

    last_time = SDL_GetTicks();
    for (;;)
    {

        start_time = SDL_GetTicks();

        while(SDL_PollEvent(&event))
        {
            switch(event.type)
            {
                case SDL_QUIT:
                exit(0);
                break;
                case SDL_KEYDOWN:
                switch (event.key.keysym.sym)
                {
                    case SDLK_p:
                    takeScreenshot("test.bmp");
                    break;
                    case SDLK_ESCAPE:
                    exit(0);
                    break;
                    default :
                    camera->OnKeyboard(event.key);
                }
                break;
                case SDL_KEYUP:
                camera->OnKeyboard(event.key);
                break;
                case SDL_MOUSEMOTION:
                camera->OnMouseMotion(event.motion);
                break;
                case SDL_MOUSEBUTTONUP:
                case SDL_MOUSEBUTTONDOWN:
                camera->OnMouseButton(event.button);
                break;
            }
        }

        current_time = SDL_GetTicks();
        elapsed_time = current_time - last_time;
        last_time = current_time;

        camera->animate(elapsed_time);

        DrawGL();

        stop_time = SDL_GetTicks();
        if ((stop_time - last_time) < time_per_frame)
        {
            SDL_Delay(time_per_frame - (stop_time - last_time));
        }

    }

    return 0;
}