Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стиль линии в OpenGL 
:(
    Опции темы
Vanoo
Дата 19.8.2005, 21:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здравствуйте!
Есть ли в OpenGL возможность устанавливать стили линии?
Насколько я знаю,прирывистая линия делается наложением шаблона. Но это влечет за собой проблему некоторой не симетричности на стыке шаблонов... Естьли вожножность иначе рисовать прирывистую линию?
Есть ли возможность округлять разрывы прирывистой линии или возможность округлять концы обычной линии?
Заранее благодарен за ответы!!!!
  Вверх
CD20
Дата 20.8.2005, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



progz.ru - тут есть перевод красной книги. Там все основы распианы. Вроде можно менять стиль. См. там.
PM MAIL   Вверх
Vanoo
Дата 20.8.2005, 19:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











CD20
Я там уже искал... К сожалению, не чего там не нашел....
  Вверх
MaxB
Дата 22.8.2005, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 10.2.2004
Где: Украина, Одесса

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



Смотри функцию:

void glLineStipple( GLint factor, GLushort pattern);

PM MAIL WWW ICQ   Вверх
Vanoo
Дата 22.8.2005, 19:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











MaxB
Эту функцию я имел в виду когда писал о наложении шаблона...
Но на сколько я понимаю округлость концов и разрывов с помощью этой функции организовать не возможно!!! Может я что-то не так понял??? smile
  Вверх
WolfMax
Дата 24.10.2005, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



прерывистые линии, делается это путем наложения маски при помощи следующей функции:
Код

void glLineStipple(GLint factor, GLushort pattern   );

Второй параметр задает саму маску. Например, если его значение равно 255(0x00FF), то, чтобы вычислить задаваемую маску, воспользуемся калькулятором. В двоичном виде это число выглядит так: 0000000011111111, т.е. всего 16 бит. Старшие восемь установлены в ноль, значит тут линии не будет. Младшие установлены в единицу, тут будет рисоваться линия. Первый параметр определяет, сколько раз повторяется каждый бит. Скажем, если его установить равным 2, то накладываемая маска будет выглядить так:

00000000000000001111111111111111

Далее приведен исходный текст с комментариями для наглядной демонстрации, что к чему.
Код

glLineWidth(1);       // ширину линии 
                      // устанавливаем 1
 glBegin(GL_LINES);
 
  glColor3d(1,0,0);     // красный цвет
  glVertex3d(-4.5,3,0); // первая линия
  glVertex3d(-3,3,0); 

  glColor3d(0,1,0);     // зеленый
  glVertex3d(-3,3.3,0); // вторая линия
  glVertex3d(-4,3.4,0); 
  
 glEnd();

 
 glLineWidth(3);      // ширина 3
 glBegin(GL_LINE_STRIP); // см. ниже
 
  glColor3d(1,0,0);
  glVertex3d(-2.7,3,0);
  glVertex3d(-1,3,0);

  glColor3d(0,1,0);
  glVertex3d(-1.5,3.3,0); 
  glColor3d(0,0,1);
  glVertex3d(-1,3.5,0); 
 
 glEnd();

 
 glLineWidth(5);
 glEnable(GL_LINE_SMOOTH); 
 glEnable(GL_LINE_STIPPLE); // разрешаем рисовать 
                            // прерывистую линию
 glLineStipple(2,58360);    // устанавливаем маску
                            // пояснения см. ниже


 glBegin(GL_LINE_LOOP);

  glColor3d(1,0,0);
  glVertex3d(1,3,0);
  glVertex3d(4,3,0);

  glColor3d(0,1,0);
  glVertex3d(3,2.7,0); 
  glColor3d(0,0,1);
  glVertex3d(2.5,3.7,0); 
 
  glEnd();

 glDisable(GL_LINE_SMOOTH);
 glDisable(GL_LINE_STIPPLE);




PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




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


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

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