Keresés

Új hozzászólás Aktív témák

  • Mr_Oizo

    csendes tag

    válasz sghc_toma #127 üzenetére

    Hm...... :) .

    Mindjárt kipróbálom. :DD Köszi a segítséget!

    Áááh! Ez nagyon király cucc :D . Tudtam, hogy van ilyen material-os dolog, de nem tudtam hogy ezt ilyen egyszerű megadni vele :)

    Köszi mégegyszer :R !

    Lenne még két kérdésem :B . Nem akarok pofátlan lenni, de ha már itt a fórum, akkor kihasználom :) .

    .3ds fájlokat töltök be a progiba, és erre van egy függvényem, amivel felépíti ezeket a betöltött object-eket GL_TRIANGLES-ből. Hogyan lehetne ezt optimalizálni, mert beolvasok kb. 100 kisebb objektumot, azokat mozgatom(kocsik egyébként :) ), és mikor kb. már 100-an vannak bent, akkor lemegy az fps ilyen 10-re :(( . A .3ds betöltőt a www.spacesimulator.net-ről töltöttem. Nem értem mitől lassul be ennyire, pedig elég jó kis gépem van, szóval nem itt lenne a gond sztem. Esetleg rakjak be forráskódot?

    Második kérdés:

    Próbálok spotlight-okat berakni a környezetbe, de nem igazán boldogulok vele. Nem azt csinálja, mint ahogy leírják.

    Van egy textúrázott négyzetem, ez a föld, ezen mennek a kocsik össze-vissza. Úgy, hogy a földnél most az z tengely van a felfele. Ide beraktam szépen spotlightot, de a direction-t elég érdekesen kell megadnom hogy megvilágítsa a földet. Elvileg úgy kellene megadnom a direction-t hogy (0.f, 0.f, -1.f), és ekkor világit merőlegesen rá a földre. De nem ezt csinálja. Hanem ahogy most megvan adva a direction, így világítja meg a földet, de ilyen furán. Itt a kód:

    //Spotlight

    float noAmbient[] = {0.2f, 0.2f, 0.2f, 1.0f}; //low ambient light
    float diffuse[] = {0.2f, 0.2f, 0.2f, 1.0f};
    float position[] = {17.0f, 17.0f, 0.2f, 1.0f};

    GLfloat specularLight[]={0.2,0.2,0.2,1.0}; // set specular light parameters
    glLightfv(GL_LIGHT2,GL_SPECULAR,specularLight);

    //GLfloat specularReflection[]={1.0,1.0,1.0,1.0}; // set specularity
    //glMaterialfv(GL_FRONT, GL_SPECULAR, specularReflection);
    //glMateriali(GL_FRONT,GL_SHININESS,128);
    glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);

    //properties of the light
    glLightfv(GL_LIGHT2, GL_AMBIENT, noAmbient);
    glLightfv(GL_LIGHT2, GL_DIFFUSE, diffuse);
    glLightfv(GL_LIGHT2, GL_POSITION, position);

    //Spot properties

    // define the spot direction and cut-off

    float direction[] = {10.0f, 10.0f, -1.0f};

    //spot direction
    glLightfv(GL_LIGHT2, GL_SPOT_DIRECTION, direction);
    //angle of the cone light emitted by the spot : value between 0 to 180
    glLightf(GL_LIGHT2, GL_SPOT_CUTOFF, 3);

    //exponent propertie defines the concentration of the light
    glLightf(GL_LIGHT2, GL_SPOT_EXPONENT, 7.0f);

    //light attenuation (default values used here : no attenuation with the distance)
    glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 1.0f);
    glLightf(GL_LIGHT2, GL_LINEAR_ATTENUATION, 0.0f);
    glLightf(GL_LIGHT2, GL_QUADRATIC_ATTENUATION, 0.0f);

    Köszönöm előre is a helpet! :R

Új hozzászólás Aktív témák