Вопросы OpenGL + C#.Событие перетаскавание

Как сделать событие перетаскивание? Т.е уменя нарисован кубик, я нажимаю левую кнопку мыши и передвигаю мышь, то объект должен вращаться.

Что-то написал. Но почему-то сразу же выходит после запуска программы.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
// для работы с библиотекой OpenGL 
using Tao.OpenGl;
// для работы с библиотекой FreeGLUT 
using Tao.FreeGlut;
// для работы с элементом управления SimpleOpenGLControl 
using Tao.Platform.Windows;

namespace View3D
{
    public partial class Form1 : Form
    {
        int x, y;
        double AlphaX,AlphaY;
        bool MouseIsDown;
        public Form1()
        {
            AlphaX = 45;
            AlphaY = 45;
            
            InitializeComponent();
            AnT.InitializeContexts();

            Init();
            Draw();
            
            Gl.glFlush();
            AnT.Invalidate();
        }

        private void Init()
        {
            Glut.glutInit();
            Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);
            Gl.glClearColor(0, 0, 0, 1);
            Gl.glViewport(0, 0, AnT.Width, AnT.Height);
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Glu.gluPerspective(45, (float)AnT.Width / (float)AnT.Height, 0.1, 200);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Glu.gluLookAt(10, 10, 10, 0, 0, 0, 0, 0, 1); 
        }

        private void Draw()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glLoadIdentity();
            Gl.glColor3f(1, 1, 1);
            Gl.glPushMatrix();
            Gl.glTranslated(0, 0, -6);
            Gl.glRotated(AlphaX, 1, 0, 0);
            Gl.glRotated(AlphaY, 0, 1, 0);

            Glut.glutWireCube(2);
            Gl.glColor3f(1, 0, 0);

            DrawAxes(0.5);
            Gl.glPopMatrix();
        }
        private void DrawAxes(double Length)
        {
            Gl.glColor3f(1, 0, 0);
            Gl.glBegin(Gl.GL_LINES);
                Gl.glVertex3d(0,0,0);
                Gl.glVertex3d(Length, 0, 0);
            Gl.glEnd();
            Gl.glColor3f(0, 1, 0);
            Gl.glBegin(Gl.GL_LINES);
                Gl.glVertex3d(0, 0, 0);
                Gl.glVertex3d(0, Length, 0);
            Gl.glEnd();
            Gl.glColor3f(0, 0, 1);
            Gl.glBegin(Gl.GL_LINES);
                Gl.glVertex3d(0, 0, 0);
                Gl.glVertex3d(0, 0, Length);
            Gl.glEnd();
        }

        private void AnT_DragDrop(object sender, DragEventArgs e)
        {
            
        }

        private void AnT_MouseDown_1(object sender, MouseEventArgs e)
        {
            x = e.X;
            y = e.Y;
            MouseIsDown = true;
        }

        private void AnT_MouseUp_1(object sender, MouseEventArgs e)
        {
            MouseIsDown = false;
        }

        private void AnT_MouseMove_1(object sender, MouseEventArgs e)
        {
            if (MouseIsDown)
            {
                AlphaX += Convert.ToDouble(x - e.X);
                AlphaY += Convert.ToDouble(y - e.Y);
                x = e.X;
                y = e.Y;
                Init();
                Draw();
            }
        }
    }
}

Блог им. TaoOpenGListerСоздание грида физичеких величин

Задумал создать визуализатор.


Буду писать потихоньку. Надеюсь на помошь советами.

Пусть для начала будем считать что грид состит из кубов.
Создаем класс одного кубика

    class Cubic
    {
        public double x, y, z,size,r,g,b;
        public Cubic(double x, double y, double z)
        {

        }
        public void Draw()
        {
            Gl.glPushMatrix();
            Gl.glTranslated(x,y,z);
            Gl.glRotated(45, 1, 0, 1);
            Gl.glColor3d(r, g, b);
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(size, size, size);
                Gl.glVertex3d(-size, size, size);
                Gl.glVertex3d(-size, -size, size);
                Gl.glVertex3d(size, -size, size);
            Gl.glEnd();
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(size, size, -size);
                Gl.glVertex3d(size, -size, -size);
                Gl.glVertex3d(-size, -size, -size);
                Gl.glVertex3d(-size, size, -size);
            Gl.glEnd();
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(-size, size, size);
                Gl.glVertex3d(-size, size, -size);
                Gl.glVertex3d(-size, -size, -size);
                Gl.glVertex3d(-size, -size, size);
            Gl.glEnd();
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(size, size, size);
                Gl.glVertex3d(size, -size, size);
                Gl.glVertex3d(size, -size, -size);
                Gl.glVertex3d(size, size, -size);
            Gl.glEnd();
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(-size, size, -size);
                Gl.glVertex3d(-size, size, size);
                Gl.glVertex3d(size, size, size);
                Gl.glVertex3d(size, size, -size);
            Gl.glEnd();
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(-size, -size, -size);
                Gl.glVertex3d(size, -size, -size);
                Gl.glVertex3d(size, -size, size);
                Gl.glVertex3d(-size, -size, size);
            Gl.glEnd();
            Gl.glPopMatrix();
        }
    }

Вопросы OpenGL + C#.координаты мыши на объекте opengl

У меня есть сетка. Как можно определять координаты при кликаньи мыши на одну из ячеек?

Блог им. TaoOpenGListerПерерисовка изображения

Есть ли одна процедура типа обратного вызова, такая чтоб там прописал, и перерисовывалось изображение?

Вопросы OpenGL + C#.Перетекание цвета

Как сделать вот такую штуку
img3.imageshack.us/img3/1230/90289944.png
чтоб каждому значению соответствовало значение

Вопросы OpenGL + C#.Как пользоваться Glut.glutMainLoop()

Попробовал использовать Glut.glutMainLoop(). До этого задаю
Glut.glutDisplayFunc(RenderScene);
Glut.glutReshapeFunc(ChangeSize);
Программа виснет.
Никто не сталкивался?

Вопросы OpenGL + C#.Как сделать так чтоб SimpleOpenGLСontrol был привязан к краям формы?

Чтоб при разворачивании формы, размеры SimpleOpenGLСontrol менялись тоже?

Вопросы OpenGL + C#.Как описать константы типа GL_POLYGON которые описаны в gl.h

Они описаны в gl.h. Как возможно подключить gl.h?
#define GL_POINTS 0x0000
#define GL_LINES 0x0001
#define GL_LINE_LOOP 0x0002
#define GL_LINE_STRIP 0x0003
#define GL_TRIANGLES 0x0004
#define GL_TRIANGLE_STRIP 0x0005
#define GL_TRIANGLE_FAN 0x0006
#define GL_QUADS 0x0007
#define GL_QUAD_STRIP 0x0008
#define GL_POLYGON 0x0009
Можно в принципе цифры писать, но код будет не читабельный. Кто с этим сталкивался?