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); }
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(); } } }
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); }
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); }
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); }
/// <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); }
/** * @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); }
// Изменение размера шрифта public void Reload(SimpleOpenGlControl sm) { x0 = sm.Width; y0 = sm.Height / 2; y1 = 0; x1 = 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(); }
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(); } }
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); }
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); } }
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 }
public static Chart3D NewInstance(SimpleOpenGlControl control) { if (chart == null) { chart = new Chart3D(control); } return(chart); }
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(); } }
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(); } }
// ------------------------------ 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; }
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); // Глубина, где туман заканчивается. }
// конструктор сцены 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); }
// ------------------------------ 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; }
// конструктор камеры 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]); }
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(); }
/// <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); }
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>(); }
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); }
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; }