Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GL_POLYGON в OpenGL 
:(
    Опции темы
jorka
Дата 3.11.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 25.10.2008

Репутация: нет
Всего: нет



Как работает GL_POLYGON ? я думал что он последовательно соединяет точки, но когда с его помощью рисую "лесенку" то получается совсем не понятное что-то(
PM MAIL   Вверх
Alexeis
Дата 3.11.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(jorka @  3.11.2008,  18:40 Найти цитируемый пост)
Как работает GL_POLYGON ? я думал что он последовательно соединяет точки, но когда с его помощью рисую "лесенку" то получается совсем не понятное что-то( 

  На вывод в OpenGL действуют различные флаги. Покажите код и скрин того что получилось. GL_POLYGON рисует замкнутый полигон или каркас или только вершины или залитый каркас. Короч. гадать можно много, проще посмотреть на то что есть.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
jorka
Дата 3.11.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 25.10.2008

Репутация: нет
Всего: нет



Код

     glBegin(GL_POLYGON);
       glVertex3f(0,0,0);
       glVertex3f(0,1,0);
       glVertex3f(1,1,0);
       glVertex3f(1,2,0);
       glVertex3f(2,2,0);
       glVertex3f(2,0,0);
     glend;




Присоединённый файл ( Кол-во скачиваний: 41 )
Присоединённый файл  ______.JPG 1,38 Kb
PM MAIL   Вверх
Alexeis
Дата 3.11.2008, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Ну да, ну да, в представлении чисел с плавающей точкой координаты верхнего правого угла (1,1) нижнего левого (-1, -1). фигура рисуется в невидимой области 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
jorka
Дата 3.11.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 25.10.2008

Репутация: нет
Всего: нет



Цитата(Alexeis @ 3.11.2008,  21:26)
Ну да, ну да, в представлении чисел с плавающей точкой координаты верхнего правого угла (1,1) нижнего левого (-1, -1). фигура рисуется в невидимой области

не совсем понял о чем Вы, фигура рисуется полностью, но вместо тупого угла должен быть прямой(согласно координатам)
PM MAIL   Вверх
Alexeis
Дата 3.11.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(jorka @  3.11.2008,  20:37 Найти цитируемый пост)
не совсем понял о чем Вы, фигура рисуется полностью, но вместо тупого угла должен быть прямой(согласно координатам)

  У меня рисуется прямоугольник в верхнем левом углу, как я и предполагал. Приатачте тестовый проект к посту.

Собственно вот тестовый пример, на котором я проверял
Код

{**********************************************************************}
{* Иллюстрация к книге "OpenGL в проектах Delphi"                     *}
{* Краснов М.В. [email protected]                                        *}
{**********************************************************************}

unit Unit1;

interface

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

type
  TfrmGL = class(TForm)
    btnColor: TButton;
    ColorDialog1: TColorDialog;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure btnColorClick(Sender: TObject);

  private
    hrc : HGLRC;
    R, G, B : GLFloat;
    procedure ColorToGL (c : TColor; var R, G, B : GLFloat);
  end;

var
  frmGL: TfrmGL;

implementation

{$R *.DFM}

{=======================================================================
Перевод цвета из TColor в OpenGL}
procedure TfrmGL.ColorToGL (c : TColor; var R, G, B : GLFloat);
begin
 R := (c mod $100) / 255;
 G := ((c div $100) mod $100) / 255;
 B := (c div $10000) / 255;
end;

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

 glClearColor (R, G, B, 1.0);        // цвет фона
 glClear (GL_COLOR_BUFFER_BIT);      // очистка буфера цвета

     glBegin(GL_POLYGON);
       glVertex3f(0,0,0);
       glVertex3f(0,1,0);
       glVertex3f(1,1,0);
       glVertex3f(1,2,0);
       glVertex3f(2,2,0);
       glVertex3f(2,0,0);
     glend;

 wglMakeCurrent(0, 0);
end;

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

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

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

procedure TfrmGL.btnColorClick(Sender: TObject);
begin
 If ColorDialog1.Execute then begin
    ColorToGL (ColorDialog1.Color, R, G, B);
    Refresh;
 end;
end;

end.




--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
petrosalex
  Дата 12.3.2010, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.3.2009

Репутация: нет
Всего: нет



Цитата

GL_POLYGON. Рисует выпуклый многоугольник. Внимание! При рисовании этой фигуры многоугольник должен быть только выпуклым. То есть, отрезок, проведённый между любыми двумя его вершинами, должен находиться внутри многоугольника. Другой вариант стандартом не предусмотрен. Поэтому при нарушении этого правила результат может оказаться самым непредсказуемым. Если вы хотите нарисовать более сложный многоугольник, то его следует представить, как сочетание нескольких примитивов. 

Почитайте здесь:
http://www.linuxcenter.ru/lib/books/opengl...tml?style=print
Тоже долго бился над этой задачей т.к. в Баяковском для GL_POLYGON нарисован не выпуклый многоугольник, наверно это опечатка (:
Удачи! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0750 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.