|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.07.2013, 16:46 | #1 |
Регистрация: 12.05.2011
Сообщений: 7
|
OpenGL наложение линий
Добрый день.
Нужна помощь специалистов по OpenGl. На 2d-плоскости рисуются линии поверх друг друга. Необходимо отобразить интенсивность их наложения (пересечений) цветом. Реализовал это используя glBlendFunc - получил результат на рисунке Pic1.jpg. Все хорошо, но уж ооочень хотелось-бы чтобы интенсивность отображалась не яркостью одного цвета а градиентом, примерно как на рисунке Pic2.jpg. Главное требование к решению - скорость работы. Все что связано с glCopyPixels, glDrawPixels не подходит - сильно замедляет работу. Из видимых мне решений - использовать шейдер частиц - но я в OpenGl новичок. Возможно есть простые решения? Буду благодарен за любую помощь, совет. В архиве мой исходник на Delphi-7 |
08.07.2013, 21:32 | #2 |
Участник клуба
Регистрация: 12.09.2012
Сообщений: 1,030
|
Такое используется для визуализации в WindowsMediaPlayer. Там стоят батареи(это типо наложения).
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби. |
08.07.2013, 22:22 | #3 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Простые решения? Хм. Забивать рандомно массив точками, удалять дубликаты точек, после этого искать пересечения прямых (см. вложение). Если есть пересечение, то строить не 2 линии, а 4. Построение делать таким образом:
Код:
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 08.07.2013 в 22:40. |
08.07.2013, 22:44 | #4 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Насколько я понимаю, получить правый рисунок из левого можно применением одномерной текстуры в фрагментном шейдере.
Т.е. значение интенсивности голубого используем в качестве текстурной координаты. |
09.07.2013, 13:38 | #5 |
Регистрация: 12.05.2011
Сообщений: 7
|
Rin - спасибо за идею и source - надо будет попробовать, но боюсь что считать точки пересечений для 1000 линий будет медленее чем взять результат на рисунке 1 и перевести его по пиксельно в рисунок 2 используя glDrawPixels. А тут как раз крайне критична скорость.
s-andriano - спасибо - думаю что копать таки прийдется в сторону шейдеров. |
10.07.2013, 08:56 | #6 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Ну, я не думаю, что на картинках отражается 1000 линий. Их на порядок меньше. Но решать вам, как ни крути.
Если помог, проси поставить минус. Будь оригинален!
|
26.07.2013, 22:51 | #7 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Короче так, заморочился я, мне стало интересно как решить твою задачу без шейдеров. В каждом массиве по 13 точек. Почему? Потому что для 1000 линий хватит и этого (13*13*6).Ну там линий получается 1014, если быть точным. Вот собственно накидал кое-что:
Код:
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 26.07.2013 в 22:54. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
штриховка линий Opengl | Dr.Teck | Visual C++ | 0 | 06.11.2012 22:18 |
OpenGL - наложение текстур. | Nater | Общие вопросы Delphi | 0 | 21.02.2011 20:14 |
наложение текстур в OpenGL | FJFray | Мультимедиа в Delphi | 1 | 23.10.2010 12:40 |
Наложение нескольких текстур в OpenGL | Krechet | Мультимедиа в Delphi | 4 | 06.05.2010 15:30 |
OpenGL некорректное наложение текстуры | Selestis | Мультимедиа в Delphi | 1 | 03.02.2009 19:59 |