示例#1
0
/**
 * Main Programme
 */
int main(int argc, char** argv)
{
  
    glutInit(&argc, argv);

    //framebuffer setup
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH );

    // positioning and size of window
    glutInitWindowPosition(200, 100);
    glutInitWindowSize(WindowSize_X,WindowSize_Y);
    glutCreateWindow(argv[0]);	

    //initialize viewpoint
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0,0,-4);
    tbInitTransform();     // This is for the trackball, please ignore
    tbHelp();             // idem
	MyCameraPosition=getCameraPosition();

	//activate the light following the camera
    glEnable( GL_LIGHTING );
    glEnable( GL_LIGHT0 );
    glEnable(GL_COLOR_MATERIAL);
    int LightPos[4] = {0,0,2,0};
    int MatSpec [4] = {1,1,1,1};
    glLightiv(GL_LIGHT0,GL_POSITION,LightPos);

	//normals will be normalized in the graphics pipeline
	glEnable(GL_NORMALIZE);
    //clear color of the background is black.
	glClearColor (0.0, 0.0, 0.0, 0.0);

	// Activate rendering modes
    //activate depth test
	glEnable( GL_DEPTH_TEST ); 
    //draw front-facing triangles filled
	//and back-facing triangles as wires
    glPolygonMode(GL_FRONT,GL_FILL);
    glPolygonMode(GL_BACK,GL_LINE);
    //interpolate vertex colors over the triangles
	glShadeModel(GL_SMOOTH);

	// glut setup... to ignore
    glutReshapeFunc(reshape);
    glutKeyboardFunc(keyboard);
    glutDisplayFunc(display);
    glutMouseFunc(tbMouseFunc);    // trackball
    glutMotionFunc(tbMotionFunc);  // uses mouse
    glutIdleFunc( animate);

	init();

	//main loop for glut... this just runs your application
    glutMainLoop();
        
    return 0;  // execution never reaches this point
}
示例#2
0
文件: tp3.c 项目: confiture/M2
/****************
 *
 * routine de (ré)initialisation
 *
 ****************/
void initialisation()
{
	glLoadIdentity();
	taille=10;
	isoVal=0.5;
	zoom = 1.0;
	mode=GL_POLYGON;
	tbInitTransform();

	calculIsoSurface();
}
示例#3
0
int main(int argc, char** argv)
{
    glutInit(&argc, argv);

    // couches du framebuffer utilisees par l'application
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH );

    // position et taille de la fenetre
    glutInitWindowPosition(20, 80);
    glutInitWindowSize(W_fen,H_fen);
    glutCreateWindow(argv[0]);

	// Windows only exposes OpenGL 1.1 functions.
	// To call more modern functions, we need to load GLEW.
	#if defined(_WIN32)
		GLenum err = glewInit();
		(GLEW_OK != err) ? printf("GLEW init failed!\n") : printf("GLEW init complete\n");
	#endif

    init( );
	
    // Initialize viewpoint
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0,0,-4);
    tbInitTransform();     
    tbHelp();

	// cablage des callback
    glutReshapeFunc(reshape);
	glutIgnoreKeyRepeat(1); 
    glutKeyboardFunc(keyboard); //call *once* on keydown
	glutKeyboardUpFunc(keyboardUp);
    glutDisplayFunc(displayInternal); 
	glutMouseFunc(mouse);
	glutMotionFunc(mouseMotion);  // traqueboule utilise la souris
	glutPassiveMotionFunc(mousePassiveMotion);
    glutIdleFunc(animate);
	glutTimerFunc(firstEnemySpawnDelay, spawnEnemy, 0);
	glutTimerFunc(bossSpawnDelay, spawnBoss, 0);

    // lancement de la boucle principale
    glutMainLoop();
    
    return 0;  // instruction jamais exécutée
}
示例#4
0
文件: VolRawData.c 项目: confiture/M2
int main(int argc, char **argv)
{

  long i,j,k;
  int TailleMax;
  float Max;
  char *datafile;
  FILE *f;
  int format=2;

  /**************************************/
  /* test et récupération des arguments */
  /**************************************/

  if (argc <7) {
	fprintf( stderr, "usage:\n");
	fprintf( stderr, "%s filename sx sy sz hz format\n", argv[0]);
	fprintf( stderr, " sx sy sz : dimensions des données\n");
	fprintf( stderr, " hz : facteur d'échelle en z\n");
	fprintf( stderr, " format :\n");
	fprintf( stderr, "  1 - valeur sur 1 octet \n");
	fprintf( stderr, "  2 - valeur sur 2 octets\n");
	exit(-1);
  }

  /* sx , sy = dimensions des slices */
  /* sz =      nb de slices */
  datafile = argv[1];
  sx = atoi(argv[2]);
  sy = atoi(argv[3]);
  sz = atoi(argv[4]);
  hz = atof(argv[5]);
  format = atoi(argv[6]);

  /*****************************************/
  /* lecture et normalisation des données  */
  /* chaque donnée entre 0 et 65535        */
  /*****************************************/

  /* tableau des données volumiques */
  buffer_vol = (float*) malloc(sizeof(float) * sx*sy*sz );

  /* ouverture du fichier de donnée volumique */
  if ((f=fopen( datafile, "r")) == 0) {
	fprintf( stderr, "Impossible de lire le fichier %s\n", argv[1]);
	exit(-1);
  }

  /* lecture des données binaires : */
  /* chaque valeur sur 2 bytes (entier court entre 0 et 65535)    */
  /* buffer_vol[i + sx*j + sx*sy*k] est la donnée correspondant à */
  /*    x = i  avec  0 <= i <= sx-1								  */
  /*    y = j  avec  0 <= j <= sy-1								  */
  /*    z = k  avec  0 <= k <= sz-1								  */

  if (format==2) /* valeur du fichier sur 2 octets */
    {
		for (i=0; i<sx*sy*sz; i++)
		{
			unsigned short v;
  			fread( &v, sizeof(unsigned short), 1, f);
			buffer_vol[i] = v;
		}
	}
  else if (format==1) /* valeur du fichier sur 1 octet */
    {
		for (i=0; i<sx*sy*sz; i++)
		{
			unsigned char v;
  			fread( &v, sizeof(unsigned char), 1, f);
			buffer_vol[i] = v;
		}
	}
  else
	{
		fprintf(stderr, "Mauvais format\n");
		return -1;
	}

  fclose(f);

  /* multiplication des données par un facteur pour que */
  /* min(buffer_vol[i])=0.0 et max(buffer_vol[i])=1.0   */
  Max=0.0;
  for (i=0;i<sx*sy*sz;i++) {if (Max<buffer_vol[i]) {Max=buffer_vol[i];j=i;}}
  fprintf( stderr, "Max VolData = %f, indice=%d\n", Max,j);
  Max = 1.0/Max;
  for (i=0;i<sx*sy*sz;i++) {buffer_vol[i] *= Max;}
  Max=0.0;
  for (i=0;i<sx*sy*sz;i++) {if (Max<buffer_vol[i]) {Max=buffer_vol[i];}}
  fprintf( stderr, "Nouveau Max VolData = %f\n", Max);


  /**********************************************/
  /* initialisation de variables du programme   */
  /**********************************************/

  /* sx2 : plus petite puissance de 2 >= sx 	*/
  /* sy2 : plus petite puissance de 2 >= sy 	*/
  /* sz2 : plus petite puissance de 2 >= sz 	*/
  /* utilisés pour la représentation des slices */
  sx2 = 1; while (sx2 < sx) {sx2 *= 2;}
  sy2 = 1; while (sy2 < sy) {sy2 *= 2;}
  sz2 = 1; while (sz2 < sz) {sz2 *= 2;}

//  fprintf( stderr, "sz2 = %d\n", sz2);

  /* position initiale des coupes */
  Ox=sx/2; Oy=sy/2; Oz=sz/2;

  /* calcul d'une taille convenable pour le buffer de texture */
  TailleMax = sx2;
  if (TailleMax < sy2) {TailleMax = sy2;}
  if (TailleMax < sz2) {TailleMax = sz2;}
  TextureBuffer = (unsigned short*)
    malloc(sizeof(unsigned short) * TailleMax * TailleMax);


  /**********************************************/
  /* infos diverses dans la fenetre de commande */
  /**********************************************/

  fprintf( stderr, "Dimensions des données %d %d %d\n", sx, sy, sz);

  fprintf( stderr, "\nMode d'emploi :\n");
  fprintf( stderr, "\n rotation avec la souris (bouton gauche enfoncé)\n");

  fprintf( stderr, "\n touches x,y,z,X,Y,Z: modifie la position des 3 plans\n");
  fprintf( stderr, "       de coupe dans le volume de donnees\n");
  fprintf( stderr, " touche d : switch on/off du tracé de la courbe isovaleur'\n");
  fprintf( stderr, " touche 0 : copie d'écran dans le fichier 'image0.ppm'\n");
  fprintf( stderr, " touches +/- : augmente/diminue l'iso-valeur\n");
  fprintf( stderr, " touche i : info\n");
  fprintf( stderr, " touches q,ESC : FIN\n");

  info();

  /*************************************************/
  /* création de la fenetre avec la librairie GLUT */
  /*************************************************/

  glutInit(&argc, argv);

  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

  glutCreateWindow("Visu. de données volumiques");

  glMatrixMode(GL_PROJECTION);
  glOrtho(-sx/2.,sx/2.,-sy/2., sy/2., -1000.*hz, +1000.*hz);

  glMatrixMode(GL_MODELVIEW);
  tbInitTransform();     /* initialisation du point de vue */

  /* Register GLUT callbacks. */
  glutDisplayFunc(redraw);
  glutMouseFunc(tbMouseFunc);    /* gestion traqueboule */
  glutMotionFunc(tbMotionFunc);  /* gestion traqueboule */
  glutVisibilityFunc(visible);
  glutKeyboardFunc(key);
  glutSpecialFunc(special);

  glClearColor( 1., 1., 1., 0.);
  glClearDepth( 1.0);
  glDepthFunc(GL_LESS);
  glEnable(GL_DEPTH_TEST);
  glEnable(GL_POLYGON_OFFSET_FILL);
  glPolygonOffset(1.0, 1.0);

  /* calcul des images des 3 coupes */
  makeSliceTexture();

  glutMainLoop();
  return 0;             /* ANSI C requires main to return int. */
}
/**
 * Programme principal
 */
int main(int argc, char** argv)
{
    glutInit(&argc, argv);

    // couches du framebuffer utilisees par l'application
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH );

    // position et taille de la fenetre
    glutInitWindowPosition(200, 100);
    glutInitWindowSize(config.viewportSize_X, config.viewportSize_Y);
    glutCreateWindow(argv[0]);

    // Initialisation du point de vue
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0,0,-4);
    tbInitTransform();     // initialisation du point de vue
    tbHelp();                      // affiche l'aide sur la traqueboule
	MyCameraPosition=getCameraPosition();
    //
    // Active la lumière
    // Pour la partie
    // ECLAIRAGE

    glEnable( GL_LIGHTING );
    glEnable( GL_LIGHT0 );
    glEnable(GL_COLOR_MATERIAL);
    int LightPos[4] = {0,0,3,1};
    int MatSpec [4] = {1,1,1,1};
    glLightiv(GL_LIGHT0,GL_POSITION,LightPos);
    //glMaterialiv(GL_FRONT_AND_BACK,GL_SPECULAR,MatSpec);
    //glMateriali(GL_FRONT_AND_BACK,GL_SHININESS,10);

	glEnable(GL_NORMALIZE);
    glClearColor (0.0, 0.0, 0.0, 0.0);

	// Details sur le mode de tracé
    glEnable( GL_DEPTH_TEST );            // effectuer le test de profondeur
    //glEnable(GL_CULL_FACE);
    //glCullFace(GL_BACK);
    glPolygonMode(GL_FRONT,GL_FILL);
    glPolygonMode(GL_BACK,GL_LINE);
    glShadeModel(GL_SMOOTH);


	// cablage des callback
    glutReshapeFunc(reshape);
    glutKeyboardFunc(keyboard);
    glutDisplayFunc(display);
    glutMouseFunc(tbMouseFunc);    // traqueboule utilise la souris
    glutMotionFunc(tbMotionFunc);  // traqueboule utilise la souris
    glutIdleFunc( animate);

	init();

	//imidiate render

    // lancement de la boucle principale
    glutMainLoop();


    return 0;  // instruction jamais exécutée
}