IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Система координат и примитивы OpenGL
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


В общем, нужно отобразить простую геометрическую фигуру в пределах нормализованного объема видимости.
Нужно нарисовать пятиугольник с двумя диагоналями, используя геометрические примитивы: треугольник (GL_TRIANGLES) и отрезок (GL_LINES), а также использовать:
Команды инициализации:
auxInitWindowPosition, auxInitWindowSize, glutInitWindowPosition, glutInitWindowSize.
Команды настройки цветов фона и изображения: glClearColor, glClear, glColor.
Команды рисования геометрических примитивов: glVertex, glBegin – glEnd.
Команды задания стиля вычерчивания: glLineWidth, glEnable(GL_LINE_SMOOTH), glEnable(GL_POINT_SMOOTH).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


Ну вот, что-то сделал вроде этого, получилось вроде (используя при этом Polygon): smile.gif
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
OpenGL;

type
TfrmGL = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormDestroy(Sender: TObject);

private
hrc: HGLRC;
end;

var
frmGL: TfrmGL;

implementation

{$R *.DFM}

{=======================================================================
Перерисовка окна}
procedure TfrmGL.FormPaint(Sender: TObject);
var
i : 0..3;
begin
wglMakeCurrent(Canvas.Handle, hrc);

glViewPort (0, 0, ClientWidth, ClientHeight); // область вывода

glClearColor (0.75, 0.75, 0.5, 1.0); // определение цвета фона
glClear (GL_COLOR_BUFFER_BIT); // очистка буфера цвета

glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glColor3f (1.0, 1.0, 1.0);
glBegin (GL_POLYGON); // как-то так называется константа
glVertex2f (0, 0);
For i := 0 to 3 do
glVertex2f (0.9 * cos (2 * Pi * i / 5),
0.9 * sin (2 * Pi * i / 5));
glEnd;

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glColor3f (0.0, 0.0, 0.0);
glBegin (GL_TRIANGLE_FAN);
glVertex2f (0, 0);
For i := 0 to 3 do
glVertex2f (0.9 * cos (2 * Pi * i / 5),
0.9 * sin (2 * Pi * i / 5));
glEnd;

SwapBuffers(Canvas.Handle); // содержимое буфера - на экран
wglMakeCurrent(0, 0);
end;

{=======================================================================
Формат пикселя}
procedure SetDCPixelFormat (hdc : HDC);
var
pfd : TPixelFormatDescriptor;
nPixelFormat : Integer;
begin
FillChar (pfd, SizeOf (pfd), 0);
pfd.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
nPixelFormat := ChoosePixelFormat (hdc, @pfd);
SetPixelFormat (hdc, nPixelFormat, @pfd);
end;

{=======================================================================
Создание формы}
procedure TfrmGL.FormCreate(Sender: TObject);
begin
SetDCPixelFormat(Canvas.Handle);
hrc := wglCreateContext(Canvas.Handle);
end;

{=======================================================================
Конец работы приложения}
procedure TfrmGL.FormDestroy(Sender: TObject);
begin
wglDeleteContext(hrc);
end;

end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
mitz   Система координат и примитивы OpenGL   14.10.2010 17:46
TarasBer   Документация по OpenGL для Delphi есть? Если нет, …   14.10.2010 19:33
mitz   Документация по OpenGL для Delphi есть? Если нет,…   19.10.2010 21:19
mitz   В общем, программу я сделал, только подскажите, по…   20.10.2010 1:08
TarasBer   glBegin (GL_TRIANGLE_FAN); glVertex2f (0, 0); …   20.10.2010 13:34
mitz   А почему 4 точки задаются? Просто у меня при зад…   22.10.2010 0:39
mitz   Ну вот, что-то сделал вроде этого, получилось врод…   22.10.2010 3:57
TarasBer   А, я проглядел лишнее glVertex2f (0, 0); glBegin…   22.10.2010 13:44
TarasBer   http://tfc.duke.free.fr/old/models/images/05.gif …   22.10.2010 15:36
mitz   TarasBer, спасибо за помощь! Вот я нарисовал э…   5.11.2010 2:22
TarasBer   А какой эффект наблюдается? То, что отсекается час…   5.11.2010 2:38
mitz   А какой эффект наблюдается? То, что отсекается ча…   5.11.2010 2:51
TarasBer   > И здесь правосторонняя или левосторонняя (я п…   5.11.2010 2:59
mitz   > И здесь правосторонняя или левосторонняя (я …   5.11.2010 4:24
TarasBer   Ничего не понял. Повтори вопрос с картинками.   5.11.2010 4:29
mitz   Ничего не понял. Повтори вопрос с картинками. Хо…   5.11.2010 5:20
TarasBer   Кхм... Не пугай меня так. Ось z на этой картинке в…   5.11.2010 15:50
mitz   TarasBer, спасибо за помощь! Насчёт 2-й картин…   17.12.2010 17:59


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.05.2024 13:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name