/*
 * $Id: glapi.cpp,v 1.9 2002/07/21 15:03:12 msell Exp $
 *
 *
 * $Log: glapi.cpp,v $
 * Revision 1.9  2002/07/21 15:03:12  msell
 * Äänet disabloitu
 *
 * Revision 1.8  2002/07/15 20:32:35  msell
 * Uudet valot ja ulkoasun parantelua
 *
 * Revision 1.7  2002/06/17 19:58:08  msell
 * #includeiden parantelua
 *
 * Revision 1.6  2002/06/05 18:39:04  msell
 * Jotain pientä
 *
 * Revision 1.5  2002/06/05 15:00:41  msell
 * Palikoihin lisää detailia, facet jaetaan halutun kokosiin osiin
 *
 * Revision 1.4  2002/06/03 23:06:38  msell
 * no message
 *
 * Revision 1.3  2002/05/17 23:13:30  msell
 * Valot
 *
 * Revision 1.2  2002/05/16 18:41:16  msell
 * Vektorifunctioita ja kamera
 *
 * Revision 1.1  2002/05/15 14:36:39  msell
 * Yksinkertainen SDL-runko (Kääntyy toistaiseksi vain windowsissa).
 * Mukana myös musiikinsoitto fmodilla.
 *
 *
 *
 * $Date: 2002/07/21 15:03:12 $
 *
 */

#include "main.h"

#include "glapi.h"

void setupOpengl(int width, int height){
	//float ratio = (float)width/height;
	float ratio = 4.0/3.0;

	glShadeModel(GL_SMOOTH);

	glCullFace(GL_BACK);
	glFrontFace(GL_CCW);
	glEnable(GL_CULL_FACE);

	glEnable(GL_DEPTH_TEST);
	glDepthFunc(GL_LEQUAL);
	glClearDepth(1.0);

	glClearColor(0, 0, 0, 0);

	glEnable(GL_COLOR_MATERIAL);

	//Enables lighting with zero initial lights. Lights are created with Light-class
	glEnable(GL_LIGHTING);
	glDisable(GL_LIGHT0);

  float ambient[4]= {0.1, 0.1, 0.1, 1};
  glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);

  glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);
  glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);

  GLfloat zero[4] = {0, 0, 0, 1};
	GLfloat one[4] = {1, 1, 1, 1};

	//Default frontface lighting
  glMaterialfv(GL_FRONT, GL_AMBIENT, one);
  glMaterialfv(GL_FRONT, GL_DIFFUSE, one);
	GLfloat specular[4] = {2, 2, 2, 1};
  glMaterialfv(GL_FRONT, GL_SPECULAR, specular);
  glMaterialf(GL_FRONT, GL_SHININESS, 120);

	//Never any backface lighting, except ambient
  glMaterialfv(GL_BACK, GL_AMBIENT, one);
  glMaterialfv(GL_BACK, GL_DIFFUSE, zero);
  glMaterialfv(GL_BACK, GL_SPECULAR, zero);



	glViewport(0, 0, width, height);

	glDepthFunc(GL_LEQUAL);
  glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

	glEnable(GL_NORMALIZE);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();

	gluPerspective(60.0, ratio, 1.0, 1024.0);


	//glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}
