using System;
using System.Drawing;
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();
        }
    }
}