int InitGL(GLvoid) // All Setup For OpenGL Goes Here { if (!InitGLObjects()) return FALSE; // Function For Initializing Our Object(s) glShadeModel(GL_SMOOTH); // Enable Smooth Shading glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background glClearDepth(1.0f); // Depth Buffer Setup glClearStencil(0); // Stencil Buffer Setup glEnable(GL_DEPTH_TEST); // Enables Depth Testing glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations glLightfv(GL_LIGHT1, GL_POSITION, LightPos); // Set Light1 Position glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmb); // Set Light1 Ambience glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDif); // Set Light1 Diffuse glLightfv(GL_LIGHT1, GL_SPECULAR, LightSpc); // Set Light1 Specular glEnable(GL_LIGHT1); // Enable Light1 glEnable(GL_LIGHTING); // Enable Lighting glMaterialfv(GL_FRONT, GL_AMBIENT, MatAmb); // Set Material Ambience glMaterialfv(GL_FRONT, GL_DIFFUSE, MatDif); // Set Material Diffuse glMaterialfv(GL_FRONT, GL_SPECULAR, MatSpc); // Set Material Specular glMaterialfv(GL_FRONT, GL_SHININESS, MatShn); // Set Material Shininess glCullFace(GL_BACK); // Set Culling Face To Back Face glEnable(GL_CULL_FACE); // Enable Culling glClearColor(0.1f, 1.0f, 0.5f, 1.0f); // Set Clear Color (Greenish Color) q = gluNewQuadric(); // Initialize Quadratic gluQuadricNormals(q, GL_SMOOTH); // Enable Smooth Normal Generation gluQuadricTexture(q, GL_FALSE); // Disable Auto Texture Coords return TRUE; // Initialization Went OK }
bool NativeEngine::PrepareToRender() { do { // if we're missing a surface, context, or display, create them if (mEglDisplay == EGL_NO_DISPLAY || mEglSurface == EGL_NO_SURFACE || mEglContext == EGL_NO_CONTEXT) { // create display if needed if (!InitDisplay()) { LOGE("NativeEngine: failed to create display."); return false; } // create surface if needed if (!InitSurface()) { LOGE("NativeEngine: failed to create surface."); return false; } // create context if needed if (!InitContext()) { LOGE("NativeEngine: failed to create context."); return false; } LOGD("NativeEngine: binding surface and context (display %p, surface %p, context %p)", mEglDisplay, mEglSurface, mEglContext); // bind them if (EGL_FALSE == eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) { LOGE("NativeEngine: eglMakeCurrent failed, EGL error %d", eglGetError()); HandleEglError(eglGetError()); } // configure our global OpenGL settings ConfigureOpenGL(); } // now that we're sure we have a context and all, if we don't have the OpenGL // objects ready, create them. if (!mHasGLObjects) { LOGD("NativeEngine: creating OpenGL objects."); if (!InitGLObjects()) { LOGE("NativeEngine: unable to initialize OpenGL objects."); return false; } } } while(0); // ready to render return true; }