Új hozzászólás Aktív témák
-
Mr_Oizo
csendes tag
válasz
sghc_toma #131 üzenetére
Így van felépítve a talaj:
glBegin (GL_QUADS);
glNormal3f (0,0,1);
glTexCoord2f (0.0f,1.0f);
glVertex3f (0.0f,0.0f,offset);
glTexCoord2f (1.0f,1.0f);
glVertex3f (width,0.0f,offset);
glTexCoord2f (1.0f,0.0f);
glVertex3f (width,height,offset);
glTexCoord2f (0.0f,0.0f);
glVertex3f (0.0f,height,offset);
glEnd();De, ha glShadeModel (GL_SMOOTH); -ra be van állítva, akkor nem úgy van hogy pixelenként képezi le a fényt, és elvileg jónak kellene lennie?
Most így néz ki egyébként, hátul látszódik a spotlight eredménye:
Megpróbálom rácsra felosztani.
-
Mr_Oizo
csendes tag
válasz
sghc_toma #129 üzenetére
display list, vertex array, vertex buffer object - ezekről már hallottam, de akkor pontosan megnézem, hogy kell alkalmazni.
A spotlightokat az utcai lámpáknak szeretném, azért kellene spot-tal megoldani.
Olyan mintha túl nagy szögben világítaná meg, tehát nem fókuszál kis területre erősen a spotlight, úgy mint a linken amit lentebb beszúrtam. Pedig ennyire állítottam:
Ja és a négyzet GL_SMOOTH-ra van állítva
glLightf(GL_LIGHT2, GL_SPOT_CUTOFF, 10);
A direction pedig ekkor jó:
float direction[] = {10.0f, 10.0f, 0.0f};
//spot direction
glLightfv(GL_LIGHT2, GL_SPOT_DIRECTION, direction);Igazából valami ilyesmit szeretnék, de nem akarok összejönni:
Nem tudom hogyan lehetne a spotlighot jól beállítani, egy textúrázott négyzethez, ami a z-tengelyen 0-ban van, x, y-on pedig kb. (0,0), (19,19) között kifeszítve.
Meg a spotlight-ot ha megtanultam használni, akkor a kocsik fényszóróját is tudnám vele imitálni, ami jól nézne ki.
-
Mr_Oizo
csendes tag
válasz
sghc_toma #127 üzenetére
Hm......
.
Mindjárt kipróbálom.
Köszi a segítséget!
Áááh! Ez nagyon király cucc
. Tudtam, hogy van ilyen material-os dolog, de nem tudtam hogy ezt ilyen egyszerű megadni vele
Köszi mégegyszer
!
Lenne még két kérdésem
. 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!
-
Mr_Oizo
csendes tag
válasz
sghc_toma #125 üzenetére
Ez így elég egyszerű megoldás lenne
, csak elfelejtettem írni hogy textúrázottak a gömbök.
Egyébként most azt találtam ki, hogy rakok be fényeket, és míg a négyzetet rajzolom ki, addig glDisable(GL_LIGHTING), aztán pedig glEnable(GL_LIGHTING), és így a négyzet szép világos, a többire pedig hat a fény.
Új hozzászólás Aktív témák
Hirdetés
- Bomba Ár! Dell Latitude 3190 - Intel N4120 I 4GB I 64GB SSD I 11,6" HD I Cam I W11 I Garancia!
- Asus E510M 128GB SSD, 4GB RAM, 1 Év Garanciával
- Bomba ár! HP EliteBook Folio 1040 G1 - i5-G4 I 8GB I 256GB SSD I 14" HD+ I Cam I W10 I Garancia!
- Bomba ár! Dell Inspiron 15 3511 - i5-11GEN I 8GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Gari
- Csere-Beszámítás! Prémium felsőkategóriás Gamer PC! X870 / R9 9950X / 9070XT / 64GB DDR5
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest