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