98 ssgLight *light = ssgGetLight(0);
100 GLfloat mat_specular[] = {0.3, 0.3, 0.3, 1.0};
101 GLfloat mat_shininess[] = {50.0};
102 GLfloat light_position[] = {0, 0, 200, 0.0};
103 GLfloat lmodel_ambient[] = {0.2, 0.2, 0.2, 1.0};
104 GLfloat lmodel_diffuse[] = {0.8, 0.8, 0.8, 1.0};
105 GLfloat fog_clr[] = {1.0, 1.0, 1.0, 0.5};
125 glShadeModel(GL_SMOOTH);
127 light->setPosition(light_position[0],light_position[1],light_position[2]);
128 light->setColour(GL_AMBIENT,lmodel_ambient);
129 light->setColour(GL_DIFFUSE,lmodel_diffuse);
130 light->setColour(GL_SPECULAR,mat_specular);
131 light->setSpotAttenuation(0.0, 0.0, 0.0);
133 sgCopyVec3 (fog_clr,
grTrack->graphic.bgColor);
134 sgScaleVec3 (fog_clr, 0.8);
135 glFogi(GL_FOG_MODE, GL_LINEAR);
136 glFogfv(GL_FOG_COLOR, fog_clr);
137 glFogf(GL_FOG_DENSITY, 0.05);
138 glHint(GL_FOG_HINT, GL_DONT_CARE);
140 glEnable(GL_LIGHTING);
142 glEnable(GL_DEPTH_TEST);
145 ssgaLensFlare *sun_obj = NULL ;
146 sun_obj =
new ssgaLensFlare () ;
154 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_FALSE);
156#ifdef GL_SEPARATE_SPECULAR_COLOR
157 glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL,GL_SEPARATE_SPECULAR_COLOR);
159#ifdef GL_SEPARATE_SPECULAR_COLOR_EXT
160 glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL_EXT,GL_SEPARATE_SPECULAR_COLOR_EXT);
317 ssgSimpleState *envst;
322 const int BUFSIZE = 1024;
325 ssgVertexArray *bg_vtx;
326 ssgTexCoordArray *bg_tex;
327 ssgColourArray *bg_clr;
328 ssgNormalArray *bg_nrm;
329 ssgSimpleState *bg_st;
331 snprintf(buf, BUFSIZE,
"tracks/%s/%s;data/img;data/textures;.",
grTrack->category,
grTrack->internalname);
340 clr[0] = clr[1] = clr[2] = 1.0;
342 nrm[0] = nrm[2] = 0.0;
347 switch (graphic->
bgtype) {
351 bg_clr =
new ssgColourArray(1);
352 bg_nrm =
new ssgNormalArray(1);
380 bg =
new ssgVtxTable(GL_TRIANGLE_STRIP, bg_vtx, bg_nrm, bg_tex, bg_clr);
382 bg_st->disable(GL_LIGHTING);
391 bg_clr =
new ssgColourArray(1);
392 bg_nrm =
new ssgNormalArray(1);
420 bg =
new ssgVtxTable(GL_TRIANGLE_STRIP, bg_vtx, bg_nrm, bg_tex, bg_clr);
422 bg_st->disable(GL_LIGHTING);
429 bg_clr =
new ssgColourArray(1);
430 bg_nrm =
new ssgNormalArray(1);
458 bg =
new ssgVtxTable(GL_TRIANGLE_STRIP, bg_vtx, bg_nrm, bg_tex, bg_clr);
460 bg_st->disable(GL_LIGHTING);
467 bg_clr =
new ssgColourArray(1);
468 bg_nrm =
new ssgNormalArray(1);
496 bg =
new ssgVtxTable(GL_TRIANGLE_STRIP, bg_vtx, bg_nrm, bg_tex, bg_clr);
498 bg_st->disable(GL_LIGHTING);
505 bg_clr =
new ssgColourArray(1);
506 bg_nrm =
new ssgNormalArray(1);
534 bg =
new ssgVtxTable(GL_TRIANGLE_STRIP, bg_vtx, bg_nrm, bg_tex, bg_clr);
536 bg_st->disable(GL_LIGHTING);
550 bg_clr =
new ssgColourArray(1);
551 bg_nrm =
new ssgNormalArray(1);
579 bg =
new ssgVtxTable(GL_TRIANGLE_STRIP, bg_vtx, bg_nrm, bg_tex, bg_clr);
581 bg_st->disable(GL_LIGHTING);
593 for (i = 0; i < graphic->
envnb; i++) {
594 GfOut(
"Loading Environment Mapping Image %s\n", graphic->
env[i]);
596 envst->enable(GL_BLEND);
609 ulSetError ( UL_WARNING,
"grscene:initBackground Failed to open envshadow.png for reading") ;
610 ulSetError ( UL_WARNING,
" mandatory for top env mapping ") ;
611 ulSetError ( UL_WARNING,
" should be in the .xml !! ") ;
612 ulSetError ( UL_WARNING,
" copy the envshadow.png from g-track-2 to the track you selected ") ;
613 ulSetError ( UL_WARNING,
" c'est pas classe comme sortie, mais ca evite un crash ") ;
621 ulSetError ( UL_WARNING,
"grscene:initBackground Failed to open shadow2.rgb for reading") ;
622 ulSetError ( UL_WARNING,
" no shadow mapping on cars for this track ") ;
655 switch (pits->
type) {
657 for (i = 0; i < pits->
nMaxPits; i++) {
658 const int BUFSIZE=256;
662 sgVec4 clr = {0,0,0,1};
666 ssgVertexArray *pit_vtx =
new ssgVertexArray(4);
667 ssgTexCoordArray *pit_tex =
new ssgTexCoordArray(4);
668 ssgColourArray *pit_clr =
new ssgColourArray(1);
669 ssgNormalArray *pit_nrm =
new ssgNormalArray(1);
677 snprintf(buf, BUFSIZE,
"drivers/%s/%d;drivers/%s;data/textures;data/img;.",
682 snprintf(buf, BUFSIZE,
"drivers/%s;data/textures;data/img;.", pits->
driversPits[i].
car[0]->_modName);
685 snprintf(buf, BUFSIZE,
"data/textures;data/img;.");
690 ((ssgSimpleState*)st)->setShininess(50);
694 x2 = x - pits->
width/2.0 * normalvector.
x + pits->
len/2.0 * normalvector.
y;
695 y2 =
y - pits->
width/2.0 * normalvector.
y - pits->
len/2.0 * normalvector.
x;
698 nrm[0] = normalvector.
x;
699 nrm[1] = normalvector.
y;
719 x2 = x - pits->
width/2.0 * normalvector.
x - pits->
len/2.0 * normalvector.
y;
720 y2 =
y - pits->
width/2.0 * normalvector.
y + pits->
len/2.0 * normalvector.
x;
739 ssgVtxTable *pit =
new ssgVtxTable(GL_TRIANGLE_STRIP, pit_vtx, pit_nrm, pit_tex, pit_clr);
tdble GfParmGetNum(void *handle, const char *path, const char *key, const char *unit, tdble deflt)
Get a numerical parameter from the parameter set handle.
void grRegisterCustomSGILoader(void)