четверг, 27 мая 2010 г.

CsGL openGL

CsGL - это С# библиотека, позволяющая довольно просто и удобно использовать OpenGL в своём проекте не заморачиваясь с инициализацией. Проект заморожен, но работает стабильно. Освоив эту штуку я понял, что 3d графику освоить вполне реально, но продолжу её изучать уже без всяких библиотек.
Как её использовать в Visual Studio 2008

Для начала нужно скачать саму библиотеку с сайта проекта http://csgl.sourceforge.net/
csgl-opengl.dll и csgl-opengl-native.dll.
Вторую библиотечку (неуправляемый код) сразу можно бросить в windows\system32\, опытным путём было доказано, что без неё работать не будет.

На csgl-opengl.dll нужно добавить ссылку. Создать новый проект (Windows Forms Application), в меню Project выбрать Add Reference... и найти там скачанную библиотеку. В проект нужно добавить директиву "using CsGL.OpenGL;" (туда, где уже есть много строк, начинающихся на using).
После чего создаём новый класс-наследник:

public class gl : OpenGLControl
    {
        public override void glDraw()
        {
            GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
            GL.gluOrtho2D(0, Width, 0, Height);
            //Start painting

            //Вот тут нужно добавить код, рисующий что-то

            //End painting
            GL.glMatrixMode(GL.GL_PROJECTION);
            GL.glLoadIdentity();
        }

        protected override void OnSizeChanged(EventArgs e)
        {
            base.OnSizeChanged(e);
            GL.glMatrixMode(GL.GL_PROJECTION);
            GL.glLoadIdentity();
            glDraw();
        }
    }

У нас в Toolboxe появится новый контрол gl, который можно кинуть на форму как любой другой. Иногда, по не понятной мне причине контрол не появляется/появляется не сразу, тогда можно добавить его вручную, прописав в загрузку форму функцию:

private void initGL()
        {
            gl.Top = 0; gl.Left = 0;
            gl.Width = this.Width; gl.Height = this.Height;
            Controls.Add(gl);
        }

и объявив в классе формы gl gl = new gl();

В результате при запуске должна получиться форма с чёрным фоном, который отрисован средствами OpenGl.
Что всё это значит хорошо описано в OpenGL Red Book.

Комментариев нет:

Отправить комментарий