diff --git a/ComputerGraphicsLab2/Form1.Designer.cs b/ComputerGraphicsLab2/Form1.Designer.cs index b28dc41..db1fb3d 100644 --- a/ComputerGraphicsLab2/Form1.Designer.cs +++ b/ComputerGraphicsLab2/Form1.Designer.cs @@ -17,7 +17,6 @@ namespace ComputerGraphicsLab2 { components.Dispose(); } - base.Dispose(disposing); } @@ -40,6 +39,8 @@ namespace ComputerGraphicsLab2 this.glControl1.Size = new System.Drawing.Size(776, 426); this.glControl1.TabIndex = 0; this.glControl1.VSync = false; + this.glControl1.Load += new System.EventHandler(this.glControl1_Load); + this.glControl1.Paint += new System.Windows.Forms.PaintEventHandler(this.glControl1_Paint); // // Form1 // @@ -48,13 +49,13 @@ namespace ComputerGraphicsLab2 this.ClientSize = new System.Drawing.Size(800, 450); this.Controls.Add(this.glControl1); this.Name = "Form1"; - this.Text = "Form1"; + this.Text = "OpenGL Triangle"; this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); } - private OpenTK.GLControl glControl1; - #endregion + + private OpenTK.GLControl glControl1; } } \ No newline at end of file diff --git a/ComputerGraphicsLab2/Form1.cs b/ComputerGraphicsLab2/Form1.cs index 559d716..1649aca 100644 --- a/ComputerGraphicsLab2/Form1.cs +++ b/ComputerGraphicsLab2/Form1.cs @@ -1,19 +1,14 @@ using System; +using System.Drawing; using System.Windows.Forms; using OpenTK; -using OpenTK.Graphics; using OpenTK.Graphics.OpenGL; -using OpenTK.Input; -using System.Drawing; -using BeginMode = OpenTK.Graphics.OpenGL.BeginMode; -using ClearBufferMask = OpenTK.Graphics.OpenGL.ClearBufferMask; -using GL = OpenTK.Graphics.OpenGL.GL; namespace ComputerGraphicsLab2 { public partial class Form1 : Form { - private int CubeSize = 128; + private bool glLoaded = false; public Form1() { @@ -22,27 +17,55 @@ namespace ComputerGraphicsLab2 private void Form1_Load(object sender, EventArgs e) { - var width = 512; - var height = 512; - - var left = (width - CubeSize) / 2; - var right = left + CubeSize; - var bottom = (height - CubeSize) / 2; - var top = bottom + CubeSize; - - GL.ClearColor(Color.White); - GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); - GL.Color3(255, 0, 0); - GL.Begin(BeginMode.Quads); - GL.Vertex2(left, bottom); - GL.Vertex2(left, top); - GL.Vertex2(right, bottom); - GL.Vertex2(right, top); - GL.End(); + // Форма загружена } private void glControl1_Load(object sender, EventArgs e) { + glLoaded = true; + + // Настройка OpenGL + GL.ClearColor(Color.White); + GL.Enable(EnableCap.DepthTest); + + // Настройка viewport + GL.Viewport(0, 0, glControl1.Width, glControl1.Height); + + // Настройка проекции + GL.MatrixMode(MatrixMode.Projection); + GL.LoadIdentity(); + GL.Ortho(-2.0, 2.0, -2.0, 2.0, -1.0, 1.0); + + GL.MatrixMode(MatrixMode.Modelview); + GL.LoadIdentity(); + + // Принудительная перерисовка + glControl1.Invalidate(); + } + + private void glControl1_Paint(object sender, PaintEventArgs e) + { + if (!glLoaded) return; + + // Очистка экрана + GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); + + // Рисование треугольника + GL.Begin(PrimitiveType.Triangles); + + GL.Color3(1.0f, 0.0f, 0.0f); // красная вершина + GL.Vertex2(-1.0f, -1.0f); + + GL.Color3(0.0f, 1.0f, 0.0f); // зеленая вершина + GL.Vertex2(1.0f, -1.0f); + + GL.Color3(0.0f, 0.0f, 1.0f); // синяя вершина + GL.Vertex2(0.0f, 1.0f); + + GL.End(); + + // Отображение результата + glControl1.SwapBuffers(); } } } \ No newline at end of file diff --git a/ComputerGraphicsLab2/Lib/OpenTK.Compatibility.dll b/ComputerGraphicsLab2/Lib/OpenTK.Compatibility.dll new file mode 100644 index 0000000..46bbbf7 Binary files /dev/null and b/ComputerGraphicsLab2/Lib/OpenTK.Compatibility.dll differ diff --git a/ComputerGraphicsLab2/Lib/OpenTK.GLControl.dll b/ComputerGraphicsLab2/Lib/OpenTK.GLControl.dll new file mode 100644 index 0000000..8fad65c Binary files /dev/null and b/ComputerGraphicsLab2/Lib/OpenTK.GLControl.dll differ diff --git a/ComputerGraphicsLab2/Lib/OpenTK.dll b/ComputerGraphicsLab2/Lib/OpenTK.dll new file mode 100644 index 0000000..e792eef Binary files /dev/null and b/ComputerGraphicsLab2/Lib/OpenTK.dll differ