Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: OpenGL ja valo

Sivun loppuun

Marope [14.06.2008 13:05:39]

#

GLfloat LightAmbient[]= { 0.5f, 0.5f, 0.5f, -1.0f };
GLfloat LightDiffuse[]= { 1.0f, 1.0f, 1.0f, -1.0f };
GLfloat LightPosition[]= { 0.0f, 0.0f, -2.0f, -1.0f };
SDL_Init(SDL_INIT_EVERYTHING);
screen = SDL_SetVideoMode(800, 600, 32, SDL_OPENGL|SDL_FULLSCREEN);
glViewport(0, 0, 800, 600);
glMatrixMode(GL_PROJECTION);
gluPerspective(60, 800.0/600.0, 1, 500);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_LIGHTING);

glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);
glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);
glLightfv(GL_LIGHT1, GL_POSITION, LightPosition);
glEnable(GL_LIGHT1);

Mitä teen väärin tai mitä jätän tekemättä? Tämä vain yksinkertaisesti värjää kuution valkoiseksi.

User137 [14.06.2008 13:19:51]

#

glMaterial ja siihen liittyvät on myös määritelty kuutiolle?

Marope [14.06.2008 14:02:05]

#

GLfloat cyan[] = {0.f, .8f, .8f, 1.f};
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cyan);

User137 [14.06.2008 16:19:25]

#

glEnable(GL_MATERIAL);
tai itse käytän ainoastaan
glEnable(GL_COLOR_MATERIAL);
jotta glColor määrittää ambient ja diffusen, huomattavasti helpompi.

Marope [14.06.2008 16:39:11]

#

Hmm, nyt se ei tee yhtään mitään. Ei värjää valkoiseksi, eikä tuo esiin valoa tai varjoja.

User137 [14.06.2008 18:19:55]

#

glEnable(GL_LIGHT0); (alkaa siis 0 eikä 1:stä) ilman glLightfv kutsuja oletusarvoilla pitäisi näyttää jotain, jos kuution normaalit on myös oikein.

Marope [15.06.2008 00:07:38]

#

     glEnable(GL_BLEND);
     glBlendFunc(GL_SRC_ALPHA, GL_ONE);
     float vertex[8][3]={{x,y-koko,z-koko},{x+koko,y-koko,z-koko},{x,y,z-koko},{x+koko,y,z-koko},
                      {x,y-koko,z}, {x+koko,y-koko, z},{x,y, z},{x+koko, y, z}};

    int index[6*4]={ 0,2,3,1,  4,5,7,6,  5,1,3,7,  4,6,2,0,  7,3,2,6,  4,0,1,5 };

    GLfloat blue[] = {0, 0, 1, 1.f};
    glEnable(GL_COLOR_MATERIAL);
    glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue);
    glBegin(GL_QUADS);
    int i;
    for (i=0; i<6*4; i++)
        {
          glColor4f(0,0,255,0.1);
          glVertex3f(vertex[index[i]][0], vertex[index[i]][1], vertex[index[i]][2]);
        }

    glEnd();

}

Eli onko tässä kuutiossa nyt sitten jotain ongelmia, sillä en nyt yhtään ymmärrä miksi sitä valoa ei näy.

User137 [15.06.2008 03:08:35]

#

On, puuttuu ne normaalit kokonaan.
Tuo näyttäis olevan aika hyvä opas:
http://www.videotutorialsrock.com/opengl_tutorial/lighting/text.php


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta