Руководство по работе с графической библиотекой OpenGL. Руководство разработано с учетом опыта чтения курса Компьютерная графика
Скачать 0.66 Mb.
|
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 в Causing Тао. 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(); |