Ejemplo n.º 1
0
int main(int argc, char **argv)
{
	//Set up proper exit and signal handling
	atexit(cleanUpAndExit);
	signal(SIGTERM, exit);
	signal(SIGINT, exit);



	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
	glutInitContextVersion(3, 2);
	glutInitWindowSize (windowWidth, windowHeight);
	glutCreateWindow ("Planet");
	glutHideCursor();
	glutWarpPointer(windowWidth*0.5, windowHeight*0.5);
	glutDisplayFunc(display);
	glutReshapeFunc(InitWindow);
	Init();

	timer(glutGet(GLUT_ELAPSED_TIME));
	
	glutMainLoop();
	exit(0);
}
Ejemplo n.º 2
0
int main(int argc, char **argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
	glutInitContextVersion(3, 2);
	glutInitWindowSize (600, 600);
	glutCreateWindow ("TSBK07 Lab 4");
	glutDisplayFunc(display);
	init ();
	glutTimerFunc(20, &timer, 0);

	glutPassiveMotionFunc(&handle_mouse_helper); // set up mouse movement.
	glutHideCursor(); // Mouse does not work on OS X otherwise

	glutMainLoop();
	exit(0);
}
Ejemplo n.º 3
0
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitContextVersion(3, 2);
    glutInitWindowSize (halfWindowWidth*2, halfWindowHeight*2);
    glutCreateWindow ("TSBK07 Lab 4");
    glutDisplayFunc(display);
    init ();
    glutTimerFunc(20, &timer, 0);
    glutTimerFunc(20, &moveTimer, 0);

    glutKeyboardFunc(keyboardControl);
    glutPassiveMotionFunc(mouse);
    // move cursor to middle of window, maybe unneccesary
    glutWarpPointer(halfWindowWidth, halfWindowHeight);
    glutHideCursor();
    printf("\nExit with Esc. Fullscreen with H\n\n");

    glutMainLoop();
    exit(0);
}
Ejemplo n.º 4
0
void init(void)
{
  // vertex buffer object, used for uploading the geometry

  dumpInfo(); // Dump driver info to stdout

  glutPassiveMotionFunc(&handle_mouse_helper); // set up mouse movement.
  #ifdef __APPLE__
  glutHideCursor();
  #endif

  // Load Model
  mill = LoadModelPlus("models/windmill/windmill-walls.obj");
  wing = LoadModelPlus("models/windmill/blade.obj");
  roof = LoadModelPlus("models/windmill/windmill-roof.obj");
  balcony = LoadModelPlus("models/windmill/windmill-balcony.obj");
  ground = LoadModelPlus("models/ground.obj");
  skybox = LoadModelPlus("models/skybox.obj");
  teapot = LoadModelPlus("models/teapot.obj");

  // GL inits
  glClearColor(1,1,1,0);
  //glClearColor(0.2,0.2,0.5,0); // Color in buffer upon clear buffer
  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
  glEnable(GL_DEPTH_TEST);
  printError("GL inits");

  // ------------------------------------
  // Load and compile shader
  char* vertex_shader = malloc(MAX_FILE_SIZE);
  char* fragment_shader = malloc(MAX_FILE_SIZE);
  // Initialize to empty string
  vertex_shader[0] = '\0';
  fragment_shader[0] = '\0';

  // Append correct filename to shaders
  char* this_file = __FILE__;
  /* File ends with .c, 2 chars needs to be
  removed when appending to shaders which ends with .shader-stage */
  strncat(vertex_shader, this_file, strlen(this_file)-2);
  strncat(fragment_shader, this_file, strlen(this_file)-2);
  // Append name of shader-stage
  strcat(vertex_shader,".vert");
  strcat(fragment_shader,".frag");

  program = loadShaders(vertex_shader, fragment_shader); // These are the programs that run on GPU
  ground_shaders = loadShaders("src/lab3-4-ground.vert", "src/lab3-4-ground.frag");
  skybox_shaders = loadShaders("src/lab3-4-skybox.vert", "src/lab3-4-skybox.frag");
  printError("init shader");

  // --------------------------------------

  glUseProgram(program);
  glUniformMatrix4fv(glGetUniformLocation(program, "projectionMatrix"), 1, GL_TRUE, projectionMatrix);
  // Translations for windmill
  trans_mill = T(0,-5,-30);
  trans_teapot = T(-20,-5, -20);
  trans_roof = T(0, -4, -30);
  trans_balcony = T(0, -5, -30);
  glUniformMatrix4fv(glGetUniformLocation(program, "transformMatrix"), 1, GL_TRUE,  trans_mill.m);
  trans_wings = T(0,0,-26);
  trans_wings_up = T(4.6, 4.2, -4);
  // Upload light
  glUniform3fv(glGetUniformLocation(program, "lightSourcesDirPosArr"), 4, &lightSourcesDirectionsPositions[0].x);
  glUniform3fv(glGetUniformLocation(program, "lightSourcesColorArr"), 4, &lightSourcesColorsArr[0].x);
  glUniform1fv(glGetUniformLocation(program, "specularExponent"), 4, specularExponent);
  glUniform1iv(glGetUniformLocation(program, "isDirectional"), 4, isDirectional);

  // Upload stuff for ground
  glUseProgram(ground_shaders);
  glUniformMatrix4fv(glGetUniformLocation(ground_shaders, "projectionMatrix"), 1, GL_TRUE, projectionMatrix);

  glActiveTexture(GL_TEXTURE0);
  LoadTGATextureSimple("models/grass.tga", &ground_tex); // 5c
  int gr_scler_scalar = 10;
  mat4 temp_scaler = {
    1*gr_scler_scalar, 0, 0, 0,
    0, 1*gr_scler_scalar, 0, 0,
    0, 0, 1*gr_scler_scalar, 0,
    0, 0, 0, 1
  };
  mat4 ground_scaler = Mult(T(0, -5.4, 0), temp_scaler);
  glUniformMatrix4fv(glGetUniformLocation(ground_shaders, "transformMatrix"), 1, GL_TRUE, ground_scaler.m);

  // Upload stuff for skybox
  glUseProgram(skybox_shaders);
  glUniformMatrix4fv(glGetUniformLocation(skybox_shaders, "projectionMatrix"), 1, GL_TRUE, projectionMatrix);
  glActiveTexture(GL_TEXTURE0);
  LoadTGATextureSimple("models/SkyBox512.tga", &skybox_tex); // 5c
  skybox_transform = IdentityMatrix();



  printError("init arrays");

}