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

> ВНИМАНИЕ!

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

 
 Ответить  Открыть новую тему 
> OpenGL Линии
Sensitive
сообщение 21.10.2009 21:26
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 132
Пол: Женский
Реальное имя: Юлия

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


Здравствуйте!
Возникла небольшая проблемка с выводом линий с Делфи с помощью OpenGL.
Нужно вывести линии пучком из центра, к примеру 6 штук.
Сделала вот таки образом:
glBegin(GL_LINE_STRIP);
for i:=0 to 2 do
begin
glVertex2f(0.5,0.5);
glVertex(i/2,i*sin(pi));
end;
for i:=0 to 2 do
begin
glVertex2f(0.5,0.5);
glVertex(i/2,i*cos(pi/2)+1);
end;
glEnd;


Тип соединения должен быть обязательно GL_LINE_STRIP. Выводит одну из линий более жирную, чем все остальные. Что сделано не верно?
Прикрепляю изображение (это результат работы программы). Верхняя линия справа жирнее других.


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 22.10.2009 7:11
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Sensitive @ 21.10.2009 22:26) *
Верхняя линия справа жирнее других.
А почему я не вижу никакого утолщения? blink.gif я вроде проверял в граф.редакторе, скопировав куски и соединив.. Мне кажется, все ровно.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Sensitive
сообщение 22.10.2009 9:15
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 132
Пол: Женский
Реальное имя: Юлия

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


У меня на мониторе вроде бы тоже всё ровно, а в университете действительно та линия толще. Я так понимаю, наверное, из-за типа соединения линий, хотя ...не знаю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.10.2009 9:22
Сообщение #4


Гость






Ты бы код полностью привела, проверили бы, толще линия или нет. А то гадать на кофейной гуще - как то не хочется...
 К началу страницы 
+ Ответить 
Sensitive
сообщение 27.10.2009 13:42
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 132
Пол: Женский
Реальное имя: Юлия

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


Прикреплю полностью проект. Посмотрите, пожалуйста.


Прикрепленные файлы
Прикрепленный файл  LabOpenGL.zip ( 5.79 килобайт ) Кол-во скачиваний: 200
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.10.2009 14:58
Сообщение #6


Гость






Попробуй добавить glEnable(GL_LINE_SMOOTH), посмотри, изменит ли это картинку там, где сейчас тебе кажется, что линии разной толщины.
 К началу страницы 
+ Ответить 
TarasBer
сообщение 27.10.2009 22:06
Сообщение #7


Злостный любитель
*****

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

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


У меня тоже есть вопрос по толщине линий.
Насколько я понял, можно рисовать линию только фиксированной толщины? То есть сначала говоришь - толщина 2, и он и рисует ровно 2 пиксела по сей длине.
А мне хотелось бы, чтобы толщина данного конкретного куска линии зависела от её удалённости от наблюдателя. Это бы очень помогло при отрисовке некоторых элементов, а то так либо вдалеке что-то страшное, либо вблизи паутина.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 27.10.2009 23:11
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Цитата(TarasBer @ 27.10.2009 22:06) *

У меня тоже есть вопрос по толщине линий.
Насколько я понял, можно рисовать линию только фиксированной толщины? То есть сначала говоришь - толщина 2, и он и рисует ровно 2 пиксела по сей длине.
А мне хотелось бы, чтобы толщина данного конкретного куска линии зависела от её удалённости от наблюдателя. Это бы очень помогло при отрисовке некоторых элементов, а то так либо вдалеке что-то страшное, либо вблизи паутина.

Элементарно - каждую линию рисуешь в виде узкого прямоугольника, лежащего в плоскости параллельной экрану.

Сообщение отредактировано: andriano - 27.10.2009 23:11
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 28.10.2009 0:05
Сообщение #9


Злостный любитель
*****

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

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


Цитата(andriano @ 27.10.2009 23:11) *

Элементарно - каждую линию рисуешь в виде узкого прямоугольника, лежащего в плоскости параллельной экрану.


Ничего не элементарно.
Во-первых, эту плоскость ещё вычислять надо, и не параллельной экрану, а лежащей под наименьшим углом к экрану, скажем так.
Во-вторых, на расстоянии 10 метров этот прямоугольник приобретёт нулевую толщину.
В-третьих, рисовать и прямоугольник, и линию нелогично и затратно. Рисование линии переменной толшины реализуется для дровописателя (но не для пользователя этих дров, в которые такая возможность не встроена) довольно просто, так в чём проблема?

Сообщение отредактировано: TarasBer - 28.10.2009 0:06


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 28.10.2009 9:06
Сообщение #10


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Цитата(TarasBer @ 28.10.2009 0:05) *

Ничего не элементарно.
Во-первых, эту плоскость ещё вычислять надо, и не параллельной экрану, а лежащей под наименьшим углом к экрану, скажем так.
Во-вторых, на расстоянии 10 метров этот прямоугольник приобретёт нулевую толщину.
В-третьих, рисовать и прямоугольник, и линию нелогично и затратно. Рисование линии переменной толшины реализуется для дровописателя (но не для пользователя этих дров, в которые такая возможность не встроена) довольно просто, так в чём проблема?
Ты хочешь конкретный совет, как можно решить проблему, или просто поговорить о несовершенстве Вселенной?
Да, насчет плоскости параллельной экрану я поспешил, не подумав.
Вычисляется элементарно, если интересуют подробности, можно почитать здесь: http://www.gamedev.ru/code/terms/Billboard
Нулевую толщину он приобрести никак не может. Гоаметрическая оптика, однако. И законы перспективы.
По поводу "затратно" - это ты скажи производителям видеокарт. Зачастую бывает наоборот, что нарисовать полигон намного дешевле, чем линию.
А проблем, собственно, нет. Тебе указали рабочий вариант решения проблемы. Если ты считаешь, что он чем-то неудобен - напиши для него свою обертку, которой лично тебе будет удобно пользоваться.
Готовых решений на все случаи жизни не бывает - что-то приходится делать самому.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 28.10.2009 13:31
Сообщение #11


Злостный любитель
*****

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

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


Цитата(andriano @ 28.10.2009 9:06) *

Ты хочешь конкретный совет, как можно решить проблему, или просто поговорить о несовершенстве Вселенной?

Конкретный ответ. Который бы подошёл для ати рейдж, у которой опенгл тупо эмулируется, то есть писать 3д вручную не намного дороже.
Цитата

Вычисляется элементарно, если интересуют подробности, можно почитать здесь: http://www.gamedev.ru/code/terms/Billboard

Спасибо.
Цитата

Нулевую толщину он приобрести никак не может. Гоаметрическая оптика, однако.

Даааа? А то, что когда его толщина становится меньше пиксела, он перестаёт рисоваться?


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

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

 



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