![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Неактивный пользователь
Регистрация: 22.04.2008
Сообщений: 3
Репутация: 0
|
![]() ![]() Подскажите, пожалуйста как правильно подключить OpenGl и нарисовать там параболоид и гиперболоид что бы они могли вращаться там приближаться и отдаляться!) |
|
|
|
| Реклама: | фильм Репетиция рецензия | вентилятор для круглых каналов kv 315m | Вертикуттер-аэратор CHAMPION ESC1532 | интеграция 1с и сбис | снять в аренду барнхаус |
|
|
#2
|
|
Неактивный пользователь
Регистрация: 16.12.2009
Сообщений: 5
Репутация: 2
|
1) Запустить Delphi.
2) Сохранить «пустой» проект в отдельную папку, расположенную в папке вашей группы. Имя папки – OpenGL1. Выполнение а) выберите команду Save All из меню File б) в открывшемся диалоговом окне перейдите в папку своей группы в) создайте новую папку OpenGL1 г) оставьте предлагаемые имена файлов без изменений и нажмите кнопку «Сохранить» 3) Подключить библиотеку OpenGL. Выполнение а) используя функциональную клавишу F12, перейдите в окно редактора кода б) найдите ключевое слово uses, за которым идет перечисление имен подключаемых модулей в) добавьте в этот список OpenGL 4) Добавить в описание класса TForm1 описание двух переменных, в соответствие с приведенным фрагментом: type TForm1 = class(TForm) private { Private declarations } dc: HDC; glrc: HGLRC; public { Public declarations } end; 5) Изменить цвет формы на clSilver. Выполнение а) в Инспекторе Объектов (Object Inspector) на закладке Свойства (Properties) найдите поле Color б) измените значение свойства на clSilver 6) Создать обработчик события формы OnCreate, которое возникает в момент создания окна приложения, в соответствии с приведенным ниже примером. Выполнение а) в Инспекторе Объектов перейдите на закладку События (Events) б) сделайте двойной щелчок левой кнопкой мыши в поле OnCreate, при этом будет создан обработчик выбранного события в) заполните обработчик события в соответствии с приведенным ниже примером: procedure TForm1.FormCreate(Sender: TObject); var pfd: TPixelFormatDescriptor; nPixelFormat: Integer; begin dc := GetDC(Handle); FillChar(pfd, SizeOf(pfd), 0); pfd.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER; nPixelFormat := ChoosePixelFormat(dc, @pfd); SetPixelFormat(dc, nPixelFormat, @pfd); glrc := wglCreateContext(dc); wglMakeCurrent(dc, glrc); end; 7) Создать обработчик события формы OnResize, которое возникает после изменения пользователем размеров окна приложения, в соответствии с приведенным ниже примером: procedure TForm1.FormResize(Sender: TObject); begin // задание области вывода изображения glViewport(0, 0, ClientWidth, ClientHeight); // посылка сообщения, приводящего к запуску OnPaint InvalidateRect(Handle, nil, false); end; 8) Создать обработчик события формы OnPaint, которое возникает при необходимости перерисовать изображение окна приложения, в соответствии с приведенным ниже примером: procedure TForm1.FormPaint(Sender: TObject); begin //очистка буфера изображения glClearColor(0.75, 0.75, 0.75, 1.0); glClear(GL_COLOR_BUFFER_BIT); // здесь должны быть команды OpenGL, // определяющие изображение // ... // запись из внеэкранного буфера в основной glFlush; SwapBuffers(DC); end; 9) Создать обработчик события формы OnDestroy, которое возникает в момент разрушения окна приложения, в соответствии с приведенным ниже примером: procedure TForm1.FormDestroy(Sender: TObject); begin wglMakeCurrent(0, 0); wglDeleteContext(glrc); ReleaseDC(Handle, dc); DeleteDC(dc); end; 10) Сохранить проект и сделать копию папки, в которой он находится. Имя новой папки – OpenGL2. В результате выполнения задания мы получили программу, которая «умеет» только начинать и завершать работу с библиотекой OpenGL. Используйте этот проект в качестве шаблона при создании новых программ. Для того чтобы наша программа смогла что-нибудь нарисовать, необходимо в обработчик события формы OnPaint на место, отмеченное многоточием, поместить команды OpenGL, описывающие задуманный нами графический образ. Базовым понятием в библиотеке OpenGL является вершина. Вершина – это точка в трехмерном пространстве. Для ее определения в библиотеке OpenGL существуют несколько специальных команд. Одна из них glVertex3f (x,y,z: GLfloat) В библиотеке OpenGL определено десять геометрических примитивов, описание которых приведено в таблице Примитив или группа однотипных примитивов определяются внутри командных скобок glBegin/glEnd: glBegin (mode: GLenum); // ... glEnd; Точки GL_POINTS Каждая вершина рассматрива*ется как отдельная точка Линии GL_LINES Каждая пара вершин рассматривается как независимый отрезок Связанные линии GL_LINE_STRIP Первая вершина задает начало первого отрезка, а вторая – конец первого, который является также началом второго и т.д. Замкнутые линии GL_LINE_LOOP Связывает вершины аналогично предыдущему примитиву и соединяет последнюю вершину с первой Треугольники GL_TRIANGLES Каждая тройка вершин рассматривается как независимый треугольник Связанные треугольни*ки с общим ребром GL_TRIANGLE_STRIP Первые три вершины определяют первый треуголь*ник; вторая, третья и четвертая – второй и т.д. Связанные треугольники с общей вершиной GL_TRIANGLE_FAN Первые три вершины определяют первый треуголь*ник; первая, третья и четвертая – второй и т.д. Четырехугольники GL_QUADS Каждая группа из четырех вершин рассматривается как независимый четырехугольник Связанные четырехугольники GL_QUAD_STRIP Первые четыре вершины определяют первый четырех*угольник; третья, четвертая, шестая и пятая (в таком порядке) – второй и т.д. Многоугольник GL_POLYGON Определяет отдельный выпуклый многоугольник, заданный вершинами |
|
|
|
| Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение: |
|
|
#3
|
|
Неактивный пользователь
Пол:
Регистрация: 22.12.2008
Сообщений: 4
Репутация: 1
|
Попробуй библиотеку GLScene
|
|
|
|
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| OpenGL Extension Viewer : информация об OpenGL-драйвере видеокарты | cristalfox | Системные утилиты | 13 | 23.01.2018 20:33 |
| OpenGL + ATI | baltozar | UNIX, Linux, MacOs для PC и другие ОС | 9 | 07.02.2010 13:28 |
| OpenGL + C++ | Ivan_32 | Visual C++ / С/C++ | 9 | 13.10.2008 13:50 |
| Castalia for Delphi 2008.1 - эксперт IDE Delphi | Minotawr | Компоненты | 0 | 03.09.2008 01:17 |
| Подскажите хороший e-book по связке Delphi MSSQL Server 2000 | LeoStanlik | Delphi | 7 | 19.02.2008 17:01 |
|
|