Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Delphi

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 07.12.2009, 20:38   #1
Неактивный пользователь
 
Регистрация: 22.04.2008
Сообщений: 3
Репутация: 0
Arrow Подскажите, delphi+openGl

Подскажите, пожалуйста как правильно подключить OpenGl и нарисовать там параболоид и гиперболоид что бы они могли вращаться там приближаться и отдаляться!)
byblik вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: фильм Репетиция рецензиявентилятор для круглых каналов kv 315mВертикуттер-аэратор CHAMPION ESC1532интеграция 1с и сбисснять в аренду барнхаус


Старый 18.12.2009, 13:05   #2
Maikom
Неактивный пользователь
 
Регистрация: 16.12.2009
Сообщений: 5
Репутация: 2
По умолчанию Re: Подскажите, delphi+openGl

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 Определяет отдельный выпуклый многоугольник, заданный вершинами
Maikom вне форума
 
Ответить с цитированием Вверх
Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение:
Старый 20.01.2010, 15:45   #3
lew1987
Неактивный пользователь
 
Пол:Мужской
Регистрация: 22.12.2008
Сообщений: 4
Репутация: 1
По умолчанию Re: Подскажите, delphi+openGl

Попробуй библиотеку GLScene
lew1987 вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:39. Часовой пояс GMT +3.


Copyright ©2004 - 2025 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.04574 секунды с 13 запросами