Exemplo n.º 1
0
        public static void Main(string[] args)
        {
            ReadFile reader = new ReadFile();
            Scene    scene;

            if (args.Length != 1)
            {
                Console.Error.WriteLine("Le lecteur de fichier de scène attend un fichier exactement !!");
                System.Environment.Exit(1);
            }

            try
            {
                int nbThread = Environment.ProcessorCount;
                //ManualResetEvent[] doneEvents = new ManualResetEvent[nbThread];
                Thread[] jobs = new Thread[nbThread];

                scene = reader.Analyze(args[0]);

                /*
                 * ///Application des transformations aux triangles
                 * if (scene.Transformation.Count > 0)
                 * {
                 *  for (int i = 0; i < scene.Entite.Count; i++)
                 *      scene.Entite[i] = scene.Entite[i].getTransform(scene.Transformation[0]);
                 * }
                 */
                //Initialisation du lanceur et génération de l'image.
                Lanceur lanceur = new Lanceur(scene);

                for (int i = 0; i < nbThread; i++)
                {
                    WorkData data = new WorkData(i, nbThread);
                    jobs[i] = new Thread(() => lanceur.GenerateImage(data));
                    jobs[i].Start();
                }

                for (int i = 0; i < nbThread; i++)
                {
                    jobs[i].Join();
                }
            }

            catch (IOException e)
            {
                Console.WriteLine("Le fichier de sortie n'à pas pu être enregistré !!!");
                Console.Error.WriteLine(e.Message);
                System.Environment.Exit(1);
            }
            catch (ArgumentException f)
            {
                Console.WriteLine(f.Message);
                System.Environment.Exit(1);
            }
            catch (FormatException)
            {
                Console.WriteLine("Un ou plusieurs arguments ne sont pas des nombres !!!");
                System.Environment.Exit(1);
            }
        }