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

> ВНИМАНИЕ!

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

> Система координат и примитивы OpenGL
mitz
сообщение 14.10.2010 13:46
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
mitz
сообщение 19.10.2010 21:08
Сообщение #2


Новичок
*

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

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


В общем, программу я сделал, только подскажите, пожалуйста, как закрасить полученный пятиугольник, а также немного повернуть его, чтобы он стоял ровно в центре, без наклона.
Вот код:

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


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

 



- Текстовая версия 13.07.2025 15:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"