Главная страница
Навигация по странице:

  • 12.1.

  • Руководство по работе с графической библиотекой OpenGL. Руководство разработано с учетом опыта чтения курса Компьютерная графика


    Скачать 0.66 Mb.
    НазваниеРуководство по работе с графической библиотекой OpenGL. Руководство разработано с учетом опыта чтения курса Компьютерная графика
    Дата21.10.2022
    Размер0.66 Mb.
    Формат файлаdocx
    Имя файла221937-83556.docx
    ТипРуководство
    #747097
    страница21 из 30
    1   ...   17   18   19   20   21   22   23   24   ...   30
    void OpenGLWindow : : OnDestroy ()

    {

    m_glRC—>Destroy () ; delete m_glRC;

    CWnd: : OnDestroy () ; }

    11.6. Использование OpenGL с VCL

    Использование OpenGL с VCL — другой популярной биб­лиотекой для разработки Windows-приложений, отличается от предыдущего примера только деталям и названиями классов.

    Вот пример минимального кода на C++, который добавит OpenGL к форме (окну) VCL:

    class OpenGLForm : public TForm

    { public :

    fastcall OpenGLForm(TComponent* owner);

    // открытые, члены класса

    private :

    // закрытые члены класса GLRC* m_pGLRC;

    // контекст устройства окна published :

    // сигнатуры этих методов определены заранее.

    void fastcall FormCreate ( TObject * sender);

    void fastcall FormDestroy (TObject * sender);

    154 Глава П. Использование OPENGL в MFC и VCL

    void fastcall FormPaint ( TObject * sender);

    };

    // конструктор

    fastcall OpenGLForm : : OpenGLForm(

    TComponent* owner) : TForm( owner ) ,

    m_pGLRC(NULL) { }

    // в этом методе реализуем инициализацию

    void fastcall OpenGLForm :: FormCreate (

    TObject* sender)

    {

    m_pGLRC = new GLRC( Handle ); bool res = m_pGLRG->Create ();

    assert(res ); }

    // здесь рисуем

    void fastcall OpenGLForm :: FormPaint (

    TObject* sender)

    {

    // делаем текущим m_glRC->MakeCurrent () ;

    g 1С1 e ar (GL_COLOR_BUFFER_Brr | GL_DEPTH_BUFFER_Brr) ;

    // рисуем то, что хотим нарисовать <методы рисования OpenGL>

    m_glRC—>SwapBuffers () ; }

    // здесь происходит деинициализация

    11.6. Использование OPENGL С VCL 155

    void fastcall OpenGLForm : : FormDestroy ()

    {

    m_glRC->Destroy () ;

    delete m_glRC; }
    Глава 12.

    OpenGL в .NET

    В этом разделе рассматривается построение оконного прило­жения с поддержкой OpenGL на платформе Microsoft .NET.

    Несмотря на то, что OpenGL не имеет встроенной поддерж­ки в .NET, в настоящее время существует достаточно много ре­шений, позволяющих подключать OpenGL к .NET-программам. Мы рассмотрим работу с одной из них — свободно-распространя­емой библиотекой Tao Framework.

    Tao Framework (http://www.taoframework.com) реализует про­межуточный уровень между .NET приложением и различными \Ут32-библиотеками, в частности GL, GLU, GLUT, WGL.

    12.1. GLUT в среде Microsoft Visual C# 2005

    Простейшим способом создания OpenGL-приложения с среде .NET можно считать использование библиотеки GLUT, доступ­ной через .NET-компоненту Tao.FreeGlut.

    Далее приводятся шаги, необходимые для создания консоль­ного .NET-приложения в среде Microsoft Visual C# 2005 на С# с GLUT и OpenGL:

    157

    158

    Глава 12. OPENGL в .NET

    • Убедиться, что на машине установлен GLUT (glut32.dll ле­жит в Windows\System32).

    • Создание проекта консольного приложения: File—>New—> Projects—)► Visual C#—^Windows—^Console Application, на­брать имя проекта, ОК.

    • Добавление Тао к проекту: Project—>Add Reference—>.NET, найти в списке «Тао Framework OpenGL Binding For .NET» и «Тао Framework FreeGLUT Binding For .NET», выделить оба, ОК. Если компонент нет в списке, необходимо найти их в инсталляционном каталоге библиотеки Тао Framework и добавить через вкладку Browse.

    Программирование с использование GLUT и OpenGL в .NET на С^ практически не отличается от варианта для Win32 и C++. Ниже приведен пример простой программы, аналогичной приме­ру из п.2.5:

    Программа 12.1. Простой пример OpenGL в Ca­using Тао. FreeGlut ; using Тао . OpenGl;

    namespace gl_glut_net {

    class Program

    {

    private static int Width = 512; private static int Height = 512; public const int CubeSize = 200;

    static void DisplayQ

    { _

    int left , right , top, bottom;

    12.1. GLUT в среде MICROSOFT VISUAL C# 2005 159

    left = (Width - CubeSize) / 2; right = left + CubeSize; bottom = (Height — CubeSize) / 2; top = bottom + CubeSize ;

    Gl Gl

    Gl Gl Gl Gl Gl Gl Gl

    glClearColor(0.7f, 0.7f, 0.7f, 1); g 1С1 e ar (Gl. GL_COLOR_BUFFER_BIT);

    glColor3ub(255, 0, 0); glBegin (Gl .GL_QUADS); glVertex2f (left , bottom); glVertex2f (left , top ); glVertex2f( right , top); glVertex2f( right , bottom); glEnd();

    Gl. glFinish ();

    }

    static void Reshape (int w, int h)

    {

    Width = w;

    Height = h;

    Gl. glViewport (0 , 0, w, h);

    Gl. glMatrixMode (Gl.GL_PROJECTION);

    Gl. glLoadldentity () ;

    Gl.glOrtho(0, w, 0, h, -1.0, 1.0);

    Gl. glMatrixMode (Gl .GL_MODELVIEW); Gl. glLoadldentity () ; }

    1   ...   17   18   19   20   21   22   23   24   ...   30


    написать администратору сайта