Exemple #1
0
        public static void ScreenMode(Form1 form, SimpleOpenGlControl AnT, bool fullscreen)
        {   // Присваиваем значение "глобальной" переменной;
            FS = fullscreen;
            if (FS)
            {
                // *** ПОЛНОЭКРАННЫЙ РЕЖИМ ***
                // Скрываем рамку окна;
                form.FormBorderStyle = FormBorderStyle.None;
                // Разворачиваем окно;
                form.WindowState = FormWindowState.Maximized;

                Cursor.Hide();
            }
            else
            {
                // *** ОКОННЫЙ РЕЖИМ ***
                // Возвращаем состояние окна;
                form.WindowState = FormWindowState.Normal;
                // Показываем масштабируемую рамку окна;
                form.FormBorderStyle = FormBorderStyle.Sizable;

                Cursor.Show();

                // Задаем размеры окна;
                form.Width = 1280;
                // Ширина;
                form.Height = 720;
                // Высота;
            }
            ReSizeGLScene(AnT, form.Width, form.Height);
        }
Exemple #2
0
        public virtual void MouseMove(object sender, MouseEventArgs e)
        {
            SimpleOpenGlControl openGLWindow = (SimpleOpenGlControl)sender;

            if (this.RotateButton_down == true && Dimension == Dimension.ThreeDimension)
            {
                this.M_Rotation.Y -= (this.M_RotationD.X - e.X) * 0.5f; //繞x軸轉動幾度
                this.M_Rotation.X -= (this.M_RotationD.Y - e.Y) * 0.5f; //繞y軸轉動幾度
                this.M_RotationD   = e.Location;
                if (AutoRefresh == true)
                {
                    openGLWindow.Refresh();
                }
            }
            if (this.MoveButton_down == true)
            {
                //New Version
                if (this.ConnectedOpenGLWindow.Width >= this.ConnectedOpenGLWindow.Height)
                {
                    this.M_Translation.X -= (this.M_TranslationD.X - e.X) / ((float)this.ConnectedOpenGLWindow.Height / 2.0f) * (float)Range; //x軸平移多少距離
                    this.M_Translation.Y += (this.M_TranslationD.Y - e.Y) / ((float)this.ConnectedOpenGLWindow.Height / 2.0f) * (float)Range; //y軸平移多少距離
                    this.M_TranslationD   = e.Location;
                }
                else
                {
                    this.M_Translation.X -= (this.M_TranslationD.X - e.X) / ((float)this.ConnectedOpenGLWindow.Width / 2.0f) * (float)Range; //x軸平移多少距離
                    this.M_Translation.Y += (this.M_TranslationD.Y - e.Y) / ((float)this.ConnectedOpenGLWindow.Width / 2.0f) * (float)Range; //y軸平移多少距離
                    this.M_TranslationD   = e.Location;
                }
                if (AutoRefresh == true)
                {
                    openGLWindow.Refresh();
                }
            }
        }
Exemple #3
0
        public static void Initialization(this SimpleOpenGlControl control)
        {
            // инициализация библиотеки GLUT
            Glut.glutInit();
            // инициализация режима окна
            Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);

            // устанавливаем цвет очистки окна
            Gl.glClearColor(255, 255, 255, 1);

            // устанавливаем порт вывода, основываясь на размерах элемента управления AnT
            Gl.glViewport(0, 0, control.Width, control.Height);

            // устанавливаем проекционную матрицу
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            // очищаем ее
            Gl.glLoadIdentity();
            Glu.gluOrtho2D(0.0, control.Width, 0.0, control.Height);

            // переходим к объектно-видовой матрице
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
            Gl.glEnable(Gl.GL_BLEND);
            //Gl.glEnable(Gl.GL_DEPTH_TEST);
            //Gl.glEnable(Gl.GL_COLOR_MATERIAL);
        }
Exemple #4
0
 private void InitializeComponent()
 {
     this.AnT = new Tao.Platform.Windows.SimpleOpenGlControl();
     this.SuspendLayout();
     //
     // AnT
     //
     this.AnT.AccumBits       = ((byte)(0));
     this.AnT.AutoCheckErrors = false;
     this.AnT.AutoFinish      = false;
     this.AnT.AutoMakeCurrent = true;
     this.AnT.AutoSwapBuffers = true;
     this.AnT.BackColor       = System.Drawing.Color.Black;
     this.AnT.ColorBits       = ((byte)(32));
     this.AnT.DepthBits       = ((byte)(16));
     this.AnT.Location        = new System.Drawing.Point(12, 12);
     this.AnT.Name            = "AnT";
     this.AnT.Size            = new System.Drawing.Size(497, 431);
     this.AnT.StencilBits     = ((byte)(0));
     this.AnT.TabIndex        = 0;
     this.AnT.Load           += new System.EventHandler(this.AnT_Load);
     //
     // Form1
     //
     this.ClientSize = new System.Drawing.Size(527, 455);
     this.Controls.Add(this.AnT);
     this.Name = "Form1";
     this.ResumeLayout(false);
 }
        public GLGraphics(SimpleOpenGlControl control, Color clearColor)
        {
            this.glControl = control;
            fontCache      = new Dictionary <string, int>();

            InitGL(control.Width, control.Height, clearColor, control);
        }
Exemple #6
0
 private void InitializeComponent()
 {
     this.simpleOpenGlControl1 = new SimpleOpenGlControl();
     this.SuspendLayout();
     this.simpleOpenGlControl1.AccumBits       = (byte)0;
     this.simpleOpenGlControl1.AutoCheckErrors = false;
     this.simpleOpenGlControl1.AutoFinish      = false;
     this.simpleOpenGlControl1.AutoMakeCurrent = true;
     this.simpleOpenGlControl1.AutoSwapBuffers = true;
     this.simpleOpenGlControl1.BackColor       = Color.Black;
     this.simpleOpenGlControl1.ColorBits       = (byte)32;
     this.simpleOpenGlControl1.DepthBits       = (byte)32;
     this.simpleOpenGlControl1.Dock            = DockStyle.Fill;
     this.simpleOpenGlControl1.Location        = new Point(0, 0);
     this.simpleOpenGlControl1.Name            = "simpleOpenGlControl1";
     this.simpleOpenGlControl1.Size            = new Size(574, 386);
     this.simpleOpenGlControl1.StencilBits     = (byte)8;
     this.simpleOpenGlControl1.TabIndex        = 0;
     this.AutoScaleDimensions = new SizeF(6f, 13f);
     this.AutoScaleMode       = AutoScaleMode.Font;
     this.ClientSize          = new Size(574, 386);
     this.Controls.Add((Control)this.simpleOpenGlControl1);
     this.Name    = nameof(CGFX);
     this.Text    = nameof(CGFX);
     this.Load   += new EventHandler(this.CGFX_Load);
     this.Resize += new EventHandler(this.CGFX_Resize);
     this.ResumeLayout(false);
 }
Exemple #7
0
        /// <summary>
        /// Constructor for the renderer with a default select  tool (old behvaior)
        /// </summary>
        /// <param name="control">Gives the reference to the SimpleOpenGLControl you've created on a form</param>
        /// <param name="fps">The frames per second (max) to render at. Set this to be about 30 for good performance.</param>
        public Renderer(SimpleOpenGlControl control, double fps, bool useIntegratedSelectTool)
            : this(control, fps)
        {
            SelectTool s = new SelectTool(new ToolManager());

            AddTool(s, true);
        }
Exemple #8
0
        /**
         * @brief  Bu fonksiyon, OpenGL ekraninin koordinat duzlemini (ortho) ve pencerenin
         *         ne kadarinda goruntunun gosterilecegini (viewport) ayarlar. Aynı zamanda
         *         OpenGL ekranininin derinlik ve renk buffer'ini temizler
         * @param  glMonitor
         * @retval yok
         */
        public void glInit(SimpleOpenGlControl glMonitor, Ortho_Mode mode)
        {
            Gl.glClearColor(0, 0, 0, 0);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
            Gl.glViewport(0, 0, glMonitor.Width, glMonitor.Height); // Görüntülenecek alan tanımlanıyor ve pencere boyutunun değişme durumuna göre open gl penceresinin parametreleri ayarlanıyor

            if (mode == Ortho_Mode.BLEFT)
            {
                Gl.glOrtho(0, glMonitor.Width, 0, glMonitor.Height, 4000, -4000); // Orijin tanımlanıyor
            }
            else if (mode == Ortho_Mode.CENTER)
            {
                Gl.glOrtho(-glMonitor.Width / 2, glMonitor.Width / 2, -glMonitor.Height / 2, glMonitor.Height / 2, 4000, -4000); // Orijin tanımlanıyor
            }
            else if (mode == Ortho_Mode.CLEFT)
            {
                Gl.glOrtho(0, glMonitor.Width, -glMonitor.Height / 2, glMonitor.Height / 2, 4000, -4000); // Orijin tanımlanıyor
            }
            else
            {
                // bilerek bos birakildi
            }

            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glClearDepth(1.0f);
            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glDepthFunc(Gl.GL_LEQUAL);
            Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST);
        }
Exemple #9
0
 // Изменение размера шрифта
 public void Reload(SimpleOpenGlControl sm)
 {
     x0 = sm.Width;
     y0 = sm.Height / 2;
     y1 = 0;
     x1 = 0;
 }
Exemple #10
0
        ///////////////////////////////////////////////
        ////////////////////FIELDS/////////////////////
        ///////////////////////////////////////////////


        /*********************************************/


        ///////////////////////////////////////////////
        /////////////////CONSTRUCTORS//////////////////
        ///////////////////////////////////////////////

        public WinFormsGlContext(Timer T, Form FatherForm, SimpleOpenGlControl drawContext, Action graphicsInit, Action drawMeth, Action <int, int> reshapeMeth, int FPS)
        {
            drawContext.InitializeContexts();

            this.width       = drawContext.Width;
            this.height      = drawContext.Height;
            this.x           = drawContext.Left;
            this.y           = drawContext.Top;
            this.name        = drawContext.Name;
            this.DrawContext = drawContext;
            this.ParentForm  = FatherForm;
            this.T           = T;
            this.FPS         = FPS;

            T.Interval = (int)(1000f / FPS);
            T.Tick    += new System.EventHandler(WinFormsTimerFunc);

            this.windowObserver = new Observer(0, 0, 5, 0, 0, 0, 0, 1, 0);//setting looker

            this.InitGraphicsMeth = graphicsInit;
            this.RedisplayMeth    = drawMeth;
            this.ReshapeMeth      = reshapeMeth;


            this.defColor = new GlWinDrawColor(0.0f, 0.0f, 0.0f);

            this.setDefColor();
            this.setDefLineWidth();

            this.ParentForm.Resize += this.WinFormsReshapeFunc;
            this.InitGraphicsMeth();

            this.InitGlSetting();
        }
Exemple #11
0
        public virtual void MouseWheel_EventHandler(object sender, MouseEventArgs e)
        {
            SimpleOpenGlControl openGLWindow = (SimpleOpenGlControl)sender;

            if (e.Delta > 0)//滾輪轉的方向為正 倍率增加
            {
                this.m_Scale         *= this.Mouse_Scale_Sensitive;
                this.m_Translation.X -= (this.M_Translation.X
                                         - (e.Location.X - this.Width / 2.0f) / (this.Width / 2.0f) * (float)this.Range)
                                        * (1.0f - this.Mouse_Scale_Sensitive);              //x軸平移多少距離
                this.m_Translation.Y -= (this.M_Translation.Y
                                         + (e.Location.Y - this.Height / 2.0f) / (this.Width / 2.0f) * (float)this.Range)
                                        * (1.0f - this.Mouse_Scale_Sensitive); //y軸平移多少距離
            }
            if (e.Delta < 0)                                                   //滾輪轉的方向為負 倍率減少
            {
                this.m_Scale         /= this.Mouse_Scale_Sensitive;
                this.m_Translation.X -= (this.M_Translation.X
                                         - (e.Location.X - this.Width / 2.0f) / (this.Width / 2.0f) * (float)this.Range)
                                        * (1.0f - 1.0f / this.Mouse_Scale_Sensitive);              //x軸平移多少距離
                this.m_Translation.Y -= (this.M_Translation.Y
                                         + (e.Location.Y - this.Height / 2.0f) / (this.Width / 2.0f) * (float)this.Range)
                                        * (1.0f - 1.0f / this.Mouse_Scale_Sensitive);             //y軸平移多少距離
            }
            if (AutoRefresh == true)
            {
                openGLWindow.Refresh();
            }
        }
Exemple #12
0
 private void InitializeComponent()
 {
     GlControl2 = new SimpleOpenGlControl();
     base.SuspendLayout();
     GlControl2.AccumBits       = 0;
     GlControl2.AutoCheckErrors = false;
     GlControl2.AutoFinish      = false;
     GlControl2.AutoMakeCurrent = true;
     GlControl2.AutoSizeMode    = AutoSizeMode.GrowAndShrink;
     GlControl2.AutoSwapBuffers = true;
     GlControl2.BackColor       = Color.Black;
     GlControl2.ColorBits       = 0x20;
     GlControl2.DepthBits       = 0x10;
     GlControl2.Dock            = DockStyle.Fill;
     GlControl2.Location        = new Point(0, 0);
     GlControl2.Name            = "GlControl2";
     GlControl2.Size            = new Size(0x1a8, 0x24a);
     GlControl2.StencilBits     = 0;
     GlControl2.TabIndex        = 2;
     GlControl2.Paint          += new PaintEventHandler(GlControl2_Paint);
     base.AutoScaleDimensions   = new SizeF(6f, 13f);
     base.AutoScaleMode         = AutoScaleMode.Font;
     base.ClientSize            = new Size(0x1a8, 0x24a);
     base.Controls.Add(GlControl2);
     base.Name = "Preview_Obj";
     Text      = "Form1";
     base.ResumeLayout(false);
 }
Exemple #13
0
        public Figure(ref SimpleOpenGlControl SOGLC, string name)
        {
            try
            {
                System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

                stream = new StreamReader(name);
                AnT    = SOGLC;
                string tempStr;
                stream = new StreamReader(name);
                while (!stream.EndOfStream)
                {
                    tempStr = stream.ReadLine();
                    if (tempStr.Length > 0)
                    {
                        switch (tempStr[0])
                        {
                        case 'v':
                            LineTo(tempStr);
                            break;

                        case 'f':
                            LineToFaces(tempStr);
                            break;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
Exemple #14
0
 void glDynamic(SimpleOpenGlControl formOpenGlMonitor)
 {
     Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
     Gl.glMatrixMode(Gl.GL_MODELVIEW);
     Gl.glLoadIdentity();
     Gl.glViewport(0, 0, formOpenGlMonitor.Width, formOpenGlMonitor.Height);                                                                          // change gl secreen viewport dynamicly
     Gl.glOrtho(-formOpenGlMonitor.Width / 2, formOpenGlMonitor.Width / 2, -formOpenGlMonitor.Height / 2, formOpenGlMonitor.Height / 2, 2000, -2000); // origin redefined
 }
Exemple #15
0
        public static Chart3D NewInstance(SimpleOpenGlControl control)
        {
            if (chart == null)
            {
                chart = new Chart3D(control);
            }

            return(chart);
        }
Exemple #16
0
        public ModelViewer()
        {
            try
            {
                InitializeComponent();
                Label not = new Label();
                not.AutoSize  = false;
                not.Text      = "Not a model";
                not.Dock      = DockStyle.Fill;
                not.TextAlign = ContentAlignment.MiddleCenter;
                not.Visible   = false;
                Controls.Add(not);

                try
                {
                    gl_control = new SimpleOpenGlControl();
                    if (SoftwareRendering)
                    {
                        gl_control.Visible = false;
                    }
                    gl_control.Dock        = DockStyle.Fill;
                    gl_control.MouseDown  += image_MouseDown;
                    gl_control.MouseMove  += image_MouseMove;
                    gl_control.MouseWheel += image_MouseWheel;
                    gl_control.InitializeContexts();
                    gl_control.SizeChanged += gl_control_SizeChanged;
                    gl_control.KeyDown     += gl_control_KeyDown;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Failed to initialize OpenGL.\n\n" + ex.Message + "\n\n" + ex.StackTrace, "OpenGL Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    SoftwareRendering = true;
                }

                software_control              = new SelectablePictureBox();
                software_control.Dock         = DockStyle.Fill;
                software_control.MouseDown   += image_MouseDown;
                software_control.MouseMove   += image_MouseMove;
                software_control.MouseWheel  += image_MouseWheel;
                software_control.SizeChanged += gl_control_SizeChanged;
                software_control.KeyDown     += gl_control_KeyDown;
                if (!SoftwareRendering)
                {
                    software_control.Visible = false;
                }

                Controls.Add(gl_control);
                Controls.Add(software_control);

                selected_model = null;
            }
            catch (Exception e)
            {
                MessageBox.Show("An error occurred while loading the model viewer.\nIt's probably related to OpenGL.\n\n" + e.Message + "\n\n" + e.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        /// <summary>
        /// отрисовка поля по всей области
        /// </summary>
        /// <param name="Scene">области отрисовки</param>
        /// <param name="isNigth">текущее время суток (true — ночь, false — день)</param>
        public static void RenderField(SimpleOpenGlControl Scene, bool isNigth)
        {
            int height = Scene.Height;
            int width  = Scene.Width;

            // если текстура загружена
            if (textureIsLoad)
            {
                // очищение текущей матрицы
                Gl.glLoadIdentity();

                // включаем режим текстурирования
                Gl.glEnable(Gl.GL_TEXTURE_2D);

                if (!isNigth)
                {
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject4);
                }
                else
                {
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject5);
                }

                // включаем режим текстурирования , указывая индификатор mGlTextureObject

                // сохраняем состояние матрицы
                Gl.glPushMatrix();


                // отрисовываем полигон
                Gl.glBegin(Gl.GL_TRIANGLE_FAN);

                Gl.glTexCoord2f(0, 0);
                Gl.glVertex2d(0, 0);

                Gl.glTexCoord2f(1, 0);
                Gl.glVertex2d(width, 0);

                Gl.glTexCoord2f(1, 1);
                Gl.glVertex2d(width, height);

                Gl.glTexCoord2f(0, 1);
                Gl.glVertex2d(0, height);

                // завершаем отрисовку
                Gl.glEnd();

                // возвращаем матрицу
                Gl.glPopMatrix();
                // отключаем режим текстурирования
                Gl.glDisable(Gl.GL_TEXTURE_2D);

                // обновлеям элемент со сценой
                Scene.Invalidate();
            }
        }
Exemple #18
0
        public virtual void Reset(object sender, EventArgs e)
        {
            SimpleOpenGlControl openGLWindow = (SimpleOpenGlControl)sender;

            this.M_Translation = new PointF(0.0f, 0.0f);
            this.M_Rotation    = new PointF(0.0f, 0.0f);
            this.M_Scale       = 1;
            if (AutoRefresh == true)
            {
                openGLWindow.Refresh();
            }
        }
Exemple #19
0
 // ------------------------------ End Данные---------------------------------
 public Axis(SimpleOpenGlControl sm)
 {
     widthWindow = sm.Width;
     hightWindow = sm.Height;
     startPrice  = Paint.startPrice;
     delta       = Paint.delta;
     x0          = widthWindow;
     y0          = hightWindow / 2;
     sX          = 1;
     sY          = 1;
     sx          = 1;
 }
Exemple #20
0
        public static bool FS    = false; //включен ли полноэкранный режим
        public static void Init(SimpleOpenGlControl AnT)
        {
            Glut.glutInit();                                                               // инициализация бибилиотеки glut
            Glut.glutInitDisplayMode(Glut.GLUT_RGBA | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH); // инициализация режима экрана

            Gl.glClearColor(1, 1, 1, 1);                                                   // установка цвета очистки экрана (RGBA)
            Gl.glViewport(0, 0, AnT.Width, AnT.Height);                                    // установка порта вывода
            Gl.glMatrixMode(Gl.GL_PROJECTION);                                             // активация проекционной матрицы
            Gl.glLoadIdentity();                                                           // очистка матрицы
            Glu.gluPerspective(45, (float)AnT.Width / AnT.Height, 1, 500);                 // установка перспективы
            Gl.glMatrixMode(Gl.GL_MODELVIEW);                                              // установка объектно-видовой матрицы
            Gl.glLoadIdentity();                                                           // очистка матрицы

            // начальные настройки OpenGL
            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glEnable(Gl.GL_LIGHTING);
            Gl.glEnable(Gl.GL_LIGHT0);
            Gl.glEnable(Gl.GL_LIGHT1);
            Gl.glEnable(Gl.GL_LIGHT2);
            Gl.glEnable(Gl.GL_LIGHT3);

            Gl.glLightModeli(Gl.GL_LIGHT_MODEL_TWO_SIDE, Gl.GL_TRUE);
            Gl.glLightModelfv(Gl.GL_LIGHT_MODEL_AMBIENT, new float[] { 1.0f, 1.0f, 1.0f, 1.0f });

            ////////////////////

            //Разрешить плавное цветовое сглаживание;
            Gl.glShadeModel(Gl.GL_SMOOTH);
            // Слегка улучшим вывод перспективы;
            Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST);

            // Разрешаем смешивание;
            Gl.glEnable(Gl.GL_BLEND);
            // Устанавливаем тип смешивания;
            Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);

            //вклюючить текстурирование
            Gl.glEnable(Gl.GL_TEXTURE_2D);

            ///////////////////
            //туман

            Gl.glEnable(Gl.GL_FOG);                                             // Включает туман (GL_FOG)
            Gl.glFogi(Gl.GL_FOG_MODE, Gl.GL_LINEAR);                            // Выбираем тип тумана
            Gl.glFogfv(Gl.GL_FOG_COLOR, new float[] { 0.9f, 0.9f, 0.9f });      // Устанавливаем цвет тумана
            Gl.glFogf(Gl.GL_FOG_DENSITY, 0.05f);                                // Насколько густым будет туман
            Gl.glHint(Gl.GL_FOG_HINT, Gl.GL_NICEST);                            // Вспомогательная установка тумана
            Gl.glFogf(Gl.GL_FOG_START, 0.0f);                                   // Глубина, с которой начинается туман
            Gl.glFogf(Gl.GL_FOG_END, 4000.0f);                                  // Глубина, где туман заканчивается.
        }
Exemple #21
0
        // конструктор сцены
        public scene(SimpleOpenGlControl _OGLVP)
        {
            OGLVP = _OGLVP;

            Gl.glViewport(0, 0, OGLVP.Width, OGLVP.Height);
            Gl.glClearColor(0.7f, 0.7f, 0.8f, 1.0f);
            initLights();

            camera = new camera(OGLVP);

            string path = Directory.GetCurrentDirectory() + "/Models/";

            glass        = new material(path, "glass");
            blackPlastic = new material(path, "blackPlastic");
            wood         = new material(path, "wood");
            lead         = new material(path, "grayMetal");
            steel        = new material(path, "steel");
            brass        = new material(path, "brass");
            water        = new material(path, "water");
            glicerene    = new material(path, "glicerene");
            oil          = new material(path, "oil");

            tube        = new model(path, "tube");
            tube_inside = new model(path, "tube_inside");
            tube.setMaterial(glass);
            tube_inside.setMaterial(glass);

            bottom = new model(path, "base");
            bottom.setMaterial(blackPlastic);

            table = new model(path, "table");
            table.setMaterial(wood);

            ball = new model(path, "ball");
            ball.setMaterial(lead);

            liquid = new model(path, "liquid");
            liquid.setMaterial(water);

            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glEnable(Gl.GL_NORMALIZE);
            Gl.glEnable(Gl.GL_LIGHTING);
            Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
            Gl.glEnable(Gl.GL_BLEND);
            Gl.glEnable(Gl.GL_CULL_FACE);

            Gl.glEnable(Gl.GL_LINE_SMOOTH);
            Gl.glHint(Gl.GL_LINE_SMOOTH_HINT, Gl.GL_NICEST);
        }
Exemple #22
0
        // ------------------------------ End Данные---------------------------------

        // Конструкторы
        public Paint(DataSeris ds, SimpleOpenGlControl p, int scX, int scY)
        {
            Ant     = p;
            tf      = ds.TFrame;
            widthCl = Convert.ToByte(scX);
            hightCl = Convert.ToByte(scY);
            // countBarDraw = Convert.ToUInt16((p.Size.Width - Axis.widthY)/widthCl);
            //countBars = ds.Bars.Count;
            delta = ds.deltaTick;
            // start.X = Ant.Size.Width - Axis.widthY - widthCl;
            // start.Y = (Ant.Height - Axis.highX)/2;
            startPrice = ds.Bars.Last().Value.Close;
            axis       = new Axis(Ant);
            //bars = ds;
        }
Exemple #23
0
 // конструктор камеры
 public camera(SimpleOpenGlControl OGLVP)
 {
     eye[0] = R * Math.Cos(_phi) * Math.Cos(_psi);
     eye[1] = R * Math.Sin(_phi) * Math.Cos(_psi);
     eye[2] = R * Math.Sin(_psi);
     Gl.glMatrixMode(Gl.GL_PROJECTION);
     Gl.glLoadIdentity();
     Glu.gluPerspective(FOV, (double)OGLVP.Width / (double)OGLVP.Height, zNear, zFar);
     Gl.glMatrixMode(Gl.GL_MODELVIEW);
     Gl.glLoadIdentity();
     Glu.gluLookAt(
         eye[0], eye[1], eye[2] + _height,
         pivot[0], pivot[1], pivot[2] + _height,
         up[0], up[1], up[2]);
 }
Exemple #24
0
        public OpenGLAdapter(SimpleOpenGlControl viewport)
        {
            _viewport = viewport;
            _viewport.InitializeContexts();

            Glut.glutInit();
            Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);
            Gl.glClearColor(255, 255, 255, 1);
            Gl.glViewport(0, 0, _viewport.Width, _viewport.Height);
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Glu.gluOrtho2D(0, _viewport.Height, 0, _viewport.Width);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
        }
Exemple #25
0
        /// <summary>
        /// Constructor for the renderer
        /// </summary>
        /// <param name="control">Gives the reference to the SimpleOpenGLControl you've created on a form</param>
        /// <param name="fps">The frames per second (max) to render at. Set this to be about 30 for good performance.</param>
        public Renderer(SimpleOpenGlControl control, double fps)
        {
            this.control = control;
            this.fps     = fps;
            #region UI Initialization

            camOrtho = new GLUtility.GLCameraOrtho(w);
            camFree  = new GLUtility.GLCameraFree(w);
            camChase = new GLUtility.GLCameraChase(w);
            camPrev  = camCurrent = camOrtho;

            #endregion

            //This is baaaaad. Fix it.
            instance = this;
        }
 public Visualizer(SimpleOpenGlControl drawArea)
 {
     this.drawArea = drawArea;
     drawArea.InitializeContexts();
     SetViewPort();
     EnableSmooth();
     RefreshBorders();
     for (char s = '0'; s <= '9'; s++)
     {
         symOffset[s] = ((int)s - 48);
     }
     symOffset['p'] = 10;
     symOffset['L'] = 11;
     symOffset['z'] = 12;
     symOffset['n'] = 13;
     symOffset[','] = 14;
 }
 public void InitGL(int width, int height, Color clearColor, SimpleOpenGlControl ctrl)
 {
     //Gl.glBlendFunc(Gl.GL_ONE, Gl.GL_ZERO);
     Gl.glClearColor(((float)clearColor.R / 255.0f), ((float)clearColor.G / 255.0f), ((float)clearColor.B / 255.0f), 0);
     Gl.glClearDepth(1);
     //Gl.glDepthFunc(Gl.GL_ALWAYS); //stuff the z buffer
     //Gl.glEnable(Gl.GL_DEPTH_TEST);
     Gl.glDisable(Gl.GL_DEPTH_TEST);
     Gl.glEnable(Gl.GL_BLEND);
     Gl.glEnable(Gl.GL_LINE_STIPPLE);
     Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
     Gl.glShadeModel(Gl.GL_SMOOTH);
     Gl.glViewport(0, 0, width, height);
     //Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST);
     Gl.glEnable(Gl.GL_LINE_SMOOTH);
     Gl.glHint(Gl.GL_LINE_SMOOTH_HINT, Gl.GL_NICEST);
     Gl.glLineWidth(1.5f);
 }
Exemple #28
0
        public static void init(ref SimpleOpenGlControl canv)
        {
            canvas = canv;
            canvas.InitializeContexts();
            Glut.glutInit();
            Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_SINGLE | Glut.GLUT_DEPTH);
            Gl.glClearColor(1, 1, 1, 1);
            Gl.glViewport(0, 0, canvas.Width, canvas.Height);
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Glu.gluOrtho2D(0.0, canvas.Width, canvas.Height, 0.0);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            geometrics = new List <Shape>();
        }
Exemple #29
0
 void glInit(SimpleOpenGlControl formOpenGlMonitor)
 {
     Gl.glClearColor(0, 0, 0, 0);
     Gl.glLoadIdentity();
     Gl.glViewport(0, 0, formOpenGlMonitor.Width, formOpenGlMonitor.Height);
     Gl.glOrtho(-formOpenGlMonitor.Width / 2, formOpenGlMonitor.Width / 2, -formOpenGlMonitor.Height / 2, formOpenGlMonitor.Height / 2, 2000, -2000); // origin defined
     Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
     Gl.glClearDepth(1.0f);
     Gl.glEnable(Gl.GL_DEPTH_TEST);
     Gl.glDepthFunc(Gl.GL_LEQUAL);
     Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST);
     Gl.glEnable(Gl.GL_BLEND);
     Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
     //-------------------------------------------------------------------
     float[] shine     = new float[] { 0.25f, 0.25f, 0.25f, 1.0f };
     float[] shine2    = new float[] { 0.35f, 0.35f, 0.35f, 1.0f };
     float[] specref   = new float[] { 1.0f, 1.0f, 1.0f, 1.0f };
     float[] specular  = new float[] { 1.0f, 1.0f, 1.0f, 1.0f };
     float[] lightPos  = new float[] { 300f, 300f, -200.0f, 1.0f };
     float[] lightPos2 = new float[] { -300f, 300f, -200.0f, 1.0f };
     //-------------------------------------------------------------------
     Gl.glEnable(Gl.GL_LIGHTING);  // Lighting enabled
     //-------------------------------------------------------------------
     //--Light 0
     Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_AMBIENT, shine);
     Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_DIFFUSE, shine2);
     Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_SPECULAR, specular);
     Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_POSITION, lightPos);
     Gl.glEnable(Gl.GL_LIGHT0); // Light 0 enabled
     //------------------------------------------------------------------
     //--Light 1
     Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_AMBIENT, shine);
     Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_DIFFUSE, shine2);
     Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_SPECULAR, specular);
     Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_POSITION, lightPos2);
     Gl.glEnable(Gl.GL_LIGHT1);
     //-----------------------------------------------------------------
     Gl.glEnable(Gl.GL_COLOR_MATERIAL);
     Gl.glColorMaterial(Gl.GL_FRONT, Gl.GL_AMBIENT_AND_DIFFUSE);
     Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SPECULAR, specref);
     Gl.glMateriali(Gl.GL_FRONT, Gl.GL_SHININESS, 2); // material shine feature defined
     Gl.glEnable(Gl.GL_NORMALIZE);
 }
Exemple #30
0
        public MouseControl(SimpleOpenGlControl connectedOpenGLWindow)
        {
            this.Dimension = Dimension.TwoDimension;

            this.RotateButton_down = false;
            this.MoveButton_down   = false;

            this.Range = 100;
            this.Mouse_Scale_Sensitive = 1.2f;
            this.M_Scale     = 1;
            this.AutoRefresh = true;

            this.ConnectedOpenGLWindow                   = connectedOpenGLWindow;
            this.ConnectedOpenGLWindow.MouseDown        += this.MouseDown;
            this.ConnectedOpenGLWindow.MouseMove        += this.MouseMove;
            this.ConnectedOpenGLWindow.MouseUp          += this.MouseUp;
            this.ConnectedOpenGLWindow.MouseWheel       += this.MouseWheel;
            this.ConnectedOpenGLWindow.MouseDoubleClick += this.MouseDoubleClick;
        }