/* Initialize depth buffer, fog, light source, * material property, and lighting model. */ static void init(void) { GLfloat position[] = { 0.5, 0.5, 3.0, 0.0 }; glEnable(GL_DEPTH_TEST); glLightfv(GL_LIGHT0, GL_POSITION, position); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); { GLfloat mat[3] = {0.1745, 0.01175, 0.01175}; glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT, mat); mat[0] = 0.61424; mat[1] = 0.04136; mat[2] = 0.04136; glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, mat); mat[0] = 0.727811; mat[1] = 0.626959; mat[2] = 0.626959; glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, mat); glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 0.6*128.0); } glEnable(GL_FOG); { GLfloat fogColor[4] = {0.5, 0.5, 0.5, 1.0}; fogMode = GL_EXP; glFogx (GL_FOG_MODE, fogMode); glFogfv (GL_FOG_COLOR, fogColor); glFogf (GL_FOG_DENSITY, 0.35); glHint (GL_FOG_HINT, GL_DONT_CARE); glFogf (GL_FOG_START, 1.0); glFogf (GL_FOG_END, 5.0); } glClearColor(0.5, 0.5, 0.5, 1.0); /* fog color */ }
static void keyboard(UGWindow uwin, int key, int x, int y) { switch (key) { case 'f': case 'F': if (fogMode == GL_EXP) { fogMode = GL_EXP2; printf ("Fog mode is GL_EXP2\n"); } else if (fogMode == GL_EXP2) { fogMode = GL_LINEAR; printf ("Fog mode is GL_LINEAR\n"); } else if (fogMode == GL_LINEAR) { fogMode = GL_EXP; printf ("Fog mode is GL_EXP\n"); } glFogx(GL_FOG_MODE, fogMode); ugPostRedisplay(uwin); break; case 27: exit(0); break; default: break; } }
//============================================================================= //Setup GL //@returns TRUE on success, FALSE otherwise //============================================================================= boolean GLApp::SetupGL() { //smooth shading & depth test glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); //enable lighting operations GLfixed diffuse[] = { FTOX(1.0f), FTOX(1.0f), FTOX(1.0f), FTOX(1.0f) }; GLfixed lightPos[] = { FTOX(0.0f), FTOX(5.0f), FTOX(-5.0f) }; glEnable(GL_LIGHT0); glEnable(GL_COLOR_MATERIAL); glLightxv(GL_LIGHT0, GL_DIFFUSE, diffuse); glLightxv(GL_LIGHT0, GL_POSITION, lightPos); //enable blending operations glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); //enable fog operations GLfixed fogColor[] = { 0, 0, 0, ITOX(1) }; glFogxv(GL_FOG_COLOR, fogColor); glFogx(GL_FOG_MODE, GL_LINEAR); glFogx(GL_FOG_START, ITOX(10)); glFogx(GL_FOG_END, ITOX(70)); //perspective Correction glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); //GL Initialization glViewport(0, 0, m_DBitmapInfo.cx, m_DBitmapInfo.cy); //init Projection matrix glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustumx(ITOX(-5), ITOX(5), ITOX(-5), ITOX(5), ITOX(10), ITOX(100)); //init Model-View matrix glMatrixMode(GL_MODELVIEW); glLoadIdentity(); if(glGetError() != GL_NO_ERROR) return FALSE; return TRUE; }
void init_gles(Evas_Object *obj) { ELEMENTARY_GLVIEW_USE(obj); appdata_s *ad = (appdata_s *)evas_object_data_get(obj, APPDATA_KEY); int width; int height; elm_glview_size_get(obj, &width, &height); ad->current_tex_index = 0; { glGenTextures(2, ad->tex_ids); glBindTexture(GL_TEXTURE_2D, ad->tex_ids[0]); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 128, 128, 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, IMAGE_4444_128_128_1); glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glBindTexture(GL_TEXTURE_2D, ad->tex_ids[1]); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 128, 128, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, IMAGE_565_128_128_1); glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); } glShadeModel(GL_SMOOTH); glViewport(0, 0, width, height); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); { glEnable(GL_FOG); glFogx(GL_FOG_MODE, GL_LINEAR); glFog(GL_FOG_DENSITY, GetGlUnit(0.25f)); glFog(GL_FOG_START, GetGlUnit(4.0f)); glFog(GL_FOG_END, GetGlUnit(6.5f)); glHint(GL_FOG_HINT, GL_DONT_CARE); } SetPerspective(obj, 60.0f, 1.0f * width / height, 1.0f, 400.0f); glClearColorEx(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); }
void render_init(void) { #if TARGET_OS_IPHONE glFogx(GL_FOG_MODE, GL_LINEAR); #else glFogi(GL_FOG_MODE, GL_LINEAR); #endif GLfloat fog_color[]={1,1,1,1}; glFogfv(GL_FOG_COLOR,fog_color); bocina_deadline=-1.0; }
void glFogxLogged(GLenum pname, GLfixed param) { printf("glFogx(%s, %i)\n", GLEnumName(pname), param); glFogx(pname, param); }
void RenderEntitiesF(void) { int i; entity_t* entity; enemy_t* enemy; //printf("Starting rendering frame, t=%d.\n",simulationTime); glMatrixMode(GL_PROJECTION); gluPerspective(camera.fov, camera.aspect,camera.zNear, camera.zFar, projectionMatrix); glLoadMatrixf(projectionMatrix); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); SetupCameraF(); if (light.enabled) SetupLightingF(); glDisable(GL_CULL_FACE); glDisable(GL_FOG); //traceRenderEntity = 0; glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); for(i=0; i < numBackgroundEntities; i++) { entity = &map[i]; if (entity->numIndices == 0) continue; RenderEntityF(entity); } if (engine.fogEnabled && (renderer.props & PROP_FOG) == PROP_FOG ) { glEnable(GL_FOG); glFogx(GL_FOG_MODE, GL_LINEAR); // Fog Mode glFogfv(GL_FOG_COLOR,renderer.fogColor); // Set Fog Color glFogf(GL_FOG_DENSITY, renderer.fogDensity); // How Dense Will The Fog Be (not used if GL_FOG_MODE == GL_LINEAR ) glHint(GL_FOG_HINT, GL_FASTEST); // Fog Hint Value glFogf(GL_FOG_START, renderer.fogStartAt); // Fog Start Depth glFogf(GL_FOG_END, renderer.fogStopAt); // Fog End Depth } for(i=numBackgroundEntities; i < num_map_entities; i++) { entity = &map[i]; if (entity->numIndices == 0) continue; RenderEntityF(entity); } glEnable(GL_CULL_FACE); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); for (i=0 ; i < numPlayers; i++) { //printf("player[%d].shouldDraw=%d\n",i,players[i].shouldDraw); if (players[i].shouldDraw) RenderEntityF(&players[i].entity); } glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); //glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); //traceRenderEntity=1; enemy = ENE_GetFirstEnemy(); while (enemy != NULL) { entity = &enemy->entity; if (enemy->shouldFlicker) { glColor4f(1.0f, 1.0f, 1.0f, 1.0f); glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); RenderEntityF(entity); enemy->shouldFlicker = 0; glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); } else { glColor4f(entity->color[R], entity->color[G], entity->color[B], entity->color[A]); RenderEntityF(entity); } enemy = enemy->next; } glColor4f(1, 1, 1, 1); }