////////////////////////////////////////////////////////////////// // This function does any needed initialization on the rendering // context. void SetupRC() { int iSphere; // Calculate shadow matrix GLTVector3 vPoints[3] = {{ 0.0f, -0.4f, 0.0f }, { 10.0f, -0.4f, 0.0f }, { 5.0f, -0.4f, -5.0f }}; // Grayish background glClearColor(fLowLight[0], fLowLight[1], fLowLight[2], fLowLight[3]); // Cull backs of polygons glCullFace(GL_BACK); glFrontFace(GL_CCW); glEnable(GL_CULL_FACE); glEnable(GL_DEPTH_TEST); // Setup light parameters glLightModelfv(GL_LIGHT_MODEL_AMBIENT, fNoLight); glLightfv(GL_LIGHT0, GL_AMBIENT, fLowLight); glLightfv(GL_LIGHT0, GL_DIFFUSE, fBrightLight); glLightfv(GL_LIGHT0, GL_SPECULAR, fBrightLight); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); gltMakeShadowMatrix(vPoints, fLightPos, mShadowMatrix); // Mostly use material tracking glEnable(GL_COLOR_MATERIAL); glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); glMateriali(GL_FRONT, GL_SHININESS, 128); gltInitFrame(&frameCamera); // Initialize the camera // Randomly place the sphere inhabitants for(iSphere = 0; iSphere < NUM_SPHERES; iSphere++) { gltInitFrame(&spheres[iSphere]); // Initialize the frame // Pick a random location between -20 and 20 at .1 increments spheres[iSphere].vLocation[0] = (float)((rand() % 400) - 200) * 0.1f; spheres[iSphere].vLocation[1] = 0.0f; spheres[iSphere].vLocation[2] = (float)((rand() % 400) - 200) * 0.1f; } }
void SetupRC() { tex.load_tga_textures(szTextureFiles,4); tex.load_transp_textures(treetexture,13); tex.load_tga_textures(walltexture,9); tex.load_transp_textures(lamptexture,3); tex.load_tga_textures(floortexture,2); //open fog effect openfogeffect(); //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); // Draw everything as wire frame glCullFace(GL_BACK); glFrontFace(GL_CCW); //anti clockwise glEnable(GL_CULL_FACE); glEnable(GL_DEPTH_TEST); // Setup and enable light 0 // Enable lighting glLightModelfv(GL_LIGHT_MODEL_AMBIENT, fNoLight); glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); glLightfv(GL_LIGHT0,GL_AMBIENT,fLowLight); glLightfv(GL_LIGHT0,GL_DIFFUSE,fBrightLight); glLightfv(GL_LIGHT0, GL_SPECULAR, fBrightLight); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0,GL_POSITION,fLightPos); glEnable(GL_COLOR_MATERIAL); glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE); // glMaterialfv(GL_FRONT,GL_SPECULAR,specref); // glMateriali(GL_FRONT,GL_SHININESS,128); gltInitFrame(&frameCamera); // Initialize the camera GLTVector3 points[3] = {{ 0.0f, -0.5f, 0.0f }, { 10.0f, -0.5f, 0.0f }, { 5.0f, -0.5f, -5.0f }}; gltMakeShadowMatrix(points, fLightPos, mShadowMatrix); //glClearColor(fLowLight[0],fLowLight[1],fLowLight[2], fLowLight[3] ); }
////////////////////////////////////////////////////////////////// // This function does any needed initialization on the rendering // context. void SetupRC() { GLTVector3 vPoints[3] = {{ 0.0f, -0.4f, 0.0f }, { 10.0f, -0.4f, 0.0f }, { 5.0f, -0.4f, -5.0f } }; int iSphere; glEnable(GL_MULTISAMPLE_ARB); // Grayish background glClearColor(fLowLight[0], fLowLight[1], fLowLight[2], fLowLight[3]); // Clear stencil buffer with zero, increment by one whenever anybody // draws into it. When stencil function is enabled, only write where // stencil value is zero. This prevents the transparent shadow from drawing // over itself glStencilOp(GL_INCR, GL_INCR, GL_INCR); glClearStencil(0); glStencilFunc(GL_EQUAL, 0x0, 0x01); // Setup Fog parameters glEnable(GL_FOG); glFogfv(GL_FOG_COLOR, fLowLight); glFogi(GL_FOG_MODE, GL_LINEAR); glFogf(GL_FOG_START, 5.0f); glFogf(GL_FOG_END, 30.0f); glHint(GL_FOG_HINT, GL_NICEST); // Cull backs of polygons glCullFace(GL_BACK); glFrontFace(GL_CCW); glEnable(GL_CULL_FACE); glEnable(GL_DEPTH_TEST); glEnable(GL_MULTISAMPLE_ARB); // Setup light parameters glLightModelfv(GL_LIGHT_MODEL_AMBIENT, fNoLight); glLightfv(GL_LIGHT0, GL_AMBIENT, fLowLight); glLightfv(GL_LIGHT0, GL_DIFFUSE, fBrightLight); glLightfv(GL_LIGHT0, GL_SPECULAR, fBrightLight); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); // Calculate shadow matrix gltMakeShadowMatrix(vPoints, fLightPos, mShadowMatrix); // Mostly use material tracking glEnable(GL_COLOR_MATERIAL); glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); glMateriali(GL_FRONT, GL_SHININESS, 128); gltInitFrame(&frameCamera); // Initialize the camera // Randomly place the sphere inhabitants for(iSphere = 0; iSphere < NUM_SPHERES; iSphere++) { gltInitFrame(&spheres[iSphere]); // Initialize the frame // Pick a random location between -20 and 20 at .1 increments spheres[iSphere].vLocation[0] = (float)((rand() % 400) - 200) * 0.1f; spheres[iSphere].vLocation[1] = 0.0f; spheres[iSphere].vLocation[2] = (float)((rand() % 400) - 200) * 0.1f; } }