Esempio n. 1
0
/**
 * @brief CGLArea::paintGL
 *
 * Fonction de dessin sur la fenetre openGL
 */
void CGLArea::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLoadIdentity();
    //    paintRef();



    GLfloat ambientLight[] = {0.2f, 0.2f, 0.2f, 1.0f};
    GLfloat lightColor[] = {0.6f, 0.6f, 0.6f, 1.0f};
    GLfloat lightPos[] ={10,0,-15,1};

    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight);
    glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor);
    glLightfv(GL_LIGHT0, GL_SPECULAR, lightColor);
    glLightfv(GL_LIGHT0, GL_POSITION, lightPos);


    maSphere->vSetMaterialColor();


    CVector3 oPos;
    maSphere->vGetPosition(&oPos);

    glLoadIdentity();
    glTranslatef(oPos.fGetX(), oPos.fGetY(), oPos.fGetZ());

    // For each face...
    for(int j=0; j<maSphere->iGetNbFaces(); j++)
    {


        glBegin(GL_POLYGON);
        // For each vertex of the face
        for(int k=0;k<maSphere->iGetNbVertices(j);k++)
        {
            CVector3 oVertex;
            CVector3 oNormal;
            maSphere->vGetVertex(j,k,&oVertex);
            maSphere->vGetNormale(j,k,&oNormal);
            glNormal3f(oVertex.fGetX(), oVertex.fGetY(), oVertex.fGetZ());
            glVertex3f(oVertex.fGetX(), oVertex.fGetY(), oVertex.fGetZ());
        }
        glEnd();
    }
}