diff --git a/ComputerGraphicsLab2/ComputerGraphicsLab2.csproj b/ComputerGraphicsLab2/ComputerGraphicsLab2.csproj index aaadea9..9f75a9f 100644 --- a/ComputerGraphicsLab2/ComputerGraphicsLab2.csproj +++ b/ComputerGraphicsLab2/ComputerGraphicsLab2.csproj @@ -33,6 +33,15 @@ 4 + + Lib\OpenTK.dll + + + Lib\OpenTK.Compatibility.dll + + + Lib\OpenTK.GLControl.dll + @@ -54,6 +63,9 @@ + + Form1.cs + ResXFileCodeGenerator Resources.Designer.cs @@ -76,5 +88,8 @@ + + + \ No newline at end of file diff --git a/ComputerGraphicsLab2/Form1.Designer.cs b/ComputerGraphicsLab2/Form1.Designer.cs index 32c849c..db1fb3d 100644 --- a/ComputerGraphicsLab2/Form1.Designer.cs +++ b/ComputerGraphicsLab2/Form1.Designer.cs @@ -17,7 +17,6 @@ namespace ComputerGraphicsLab2 { components.Dispose(); } - base.Dispose(disposing); } @@ -29,12 +28,34 @@ namespace ComputerGraphicsLab2 /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + this.glControl1 = new OpenTK.GLControl(); + this.SuspendLayout(); + // + // glControl1 + // + this.glControl1.BackColor = System.Drawing.Color.Black; + this.glControl1.Location = new System.Drawing.Point(12, 12); + this.glControl1.Name = "glControl1"; + 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 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; + this.Controls.Add(this.glControl1); + this.Name = "Form1"; + this.Text = "OpenGL Triangle"; + this.Load += new System.EventHandler(this.Form1_Load); + this.ResumeLayout(false); } #endregion + + private OpenTK.GLControl glControl1; } } \ No newline at end of file diff --git a/ComputerGraphicsLab2/Form1.cs b/ComputerGraphicsLab2/Form1.cs index d7952eb..1649aca 100644 --- a/ComputerGraphicsLab2/Form1.cs +++ b/ComputerGraphicsLab2/Form1.cs @@ -1,20 +1,71 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; +using OpenTK; +using OpenTK.Graphics.OpenGL; namespace ComputerGraphicsLab2 { public partial class Form1 : Form { + private bool glLoaded = false; + public Form1() { InitializeComponent(); } + + private void Form1_Load(object sender, EventArgs e) + { + // Форма загружена + } + + 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