void init() { generateGeometry(); // Initialize camera. camera.rot.x = camera.rot.y = camera.rot.z = 0.0f; camera.pos.x = camera.pos.y = camera.pos.z = 0.0f; camera.zoom = 4.0f; camera.rotating = camera.zooming = false; camera.sensitivity = 0.4; camera.clipNear = 0.1; camera.clipFar = 10.0; blinnPhongPV = loadShader("blinn_phong_pv.vert", "blinn_phong_pv.frag"); blinnPhongPP = loadShader("blinn_phong_pp.vert", "blinn_phong_pp.frag"); phongPV = loadShader("phong_pv.vert", "phong_pv.frag"); phongPP = loadShader("phong_pp.vert", "phong_pp.frag"); bumpShader = loadShader("bump.vert", "bump.frag"); memset(options, 0, sizeof(bool) * OPTSIZE); options[OPT_LIGHTING] = true; options[OPT_SMOOTH_SHADE] = true; options[OPT_BLINN_PHONG] = true; options[OPT_OSD_FULL] = true; gMode = TORUS; updateRenderMethod(); updateShadingMethod(); }
bool VBA::updateRenderMethod(bool force) { bool ret = true; if( !updateRenderMethod0( force ) ) { // fall back to safe configuration fsAdapter = 0; videoOption = VIDEO_2X; ret = updateRenderMethod( true ); } return ret; }
void keyDown(unsigned char key, int x, int y) { switch(key) { case 27: glutDestroyWindow(win); exit(0); case 'l': options[OPT_LIGHTING] = !options[OPT_LIGHTING]; break; case 'H': shininess++; break; case 'h': if(shininess - 1 >= 0) shininess--; break; case 'n': options[OPT_DRAW_NORMALS] = !options[OPT_DRAW_NORMALS]; break; case 'f': options[OPT_SMOOTH_SHADE] = !options[OPT_SMOOTH_SHADE]; break; case 'T': tesselation *= 2; generateGeometry(); break; case 't': tesselation /= 2; generateGeometry(); break; case 'o': gMode = (gMode + 1) % GMODES; generateGeometry(); break; case 'u': options[OPT_VBO] = !options[OPT_VBO]; updateRenderMethod(); break; case 's': options[OPT_SHADER] = !options[OPT_SHADER]; updateShadingMethod(); break; case 'm': if(!options[OPT_SHADER]) options[OPT_SHADER] = true; options[OPT_BLINN_PHONG] = !options[OPT_BLINN_PHONG]; updateShadingMethod(); break; case 'p': options[OPT_PER_PIXEL] = !options[OPT_PER_PIXEL]; updateShadingMethod(); break; case 'i': options[OPT_IMMEDIATE] = !options[OPT_IMMEDIATE]; updateRenderMethod(); break; case 'w': options[OPT_WIREFRAME] = !options[OPT_WIREFRAME]; break; case 'x': options[OPT_OSD_FULL] = false; break; case 'X': options[OPT_OSD_FULL] = true; break; case 'g': options[OPT_SHADER_GEN] = !options[OPT_SHADER_GEN]; options[OPT_SHADER] = true; updateShadingMethod(); break; case 'b': options[OPT_BUMP_MAP] = !options[OPT_BUMP_MAP]; break; case 'a': options[OPT_ANIM] = !options[OPT_ANIM]; break; default: break; } }
bool VBA::initDisplay() { return updateRenderMethod(false); }