示例#1
0
文件: main.c 项目: ags/uni_coursework
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();
}
示例#2
0
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;
}
示例#3
0
文件: main.c 项目: ags/uni_coursework
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;
	}
}
示例#4
0
bool VBA::initDisplay()
{
  return updateRenderMethod(false);
}