Войти
ПрограммированиеФорумОбщее

GLScene GLLCLViewer

Страницы: 1 2 Следующая »
#0
17:36, 6 фев. 2010

Народ, помогите с реализацией, занимаюсь обновлением вьювера для GLScene!

Необходимо что бы у разрабатываемого компонента парент игнорировал отрисовку для чилдрена коим является разрабатываемый компонент.

Вся отрисовка ведется в канву, перерисовка происходит когда вызывается Invalidate. Реализация отрисовки таким методом применена потому что в лазарусе вьювер глючит при включенном манифесте. После ряда изменений удалось добится стабильной отрисовки, однако при ресайзе форма(парент) посылает событие отрисовки и тут возникают проблемы, так как у лазаруса неправильно работает перисовка по zbuffer (проще говоря то местами бэкфон сначала перерисовывает то откуда не возьмись вылазит еще какойто слой, то как нужно рисуется канва).


#1
19:55, 6 фев. 2010

www.glscene.ru

#2
22:54, 6 фев. 2010

http://freepascal.ru/

#3
23:13, 6 фев. 2010

Реализация отрисовки таким методом применена потому что в лазарусе вьювер глючит при включенном манифесте.

Я репортил про этот баг на трекере полгода назад. Его буквально на днях по всей видимости решили и выложили в транк. Я решал это подобным образом: рендерил в память, потом оттуда копировал на канву встроенными методами (названия уже не помню). Но это крайне медленно, так что приходилось отказываться от манифеста. Код там дерьмо, особенно под лазарус: куча затычек и кроссреференсов. Проблема связана с интерпретацией байтов прозрачности при включенном флажке WS_LAYERED у окошек и существует не только у GLScene, но у всех компонентов вывода OGL контекста (к примеру, в OGL демке в примерах Лажаруса).
Читай здесь: click here

#4
23:24, 6 фев. 2010

Спасибо за ответ, буду тестировать!

#5
15:45, 7 фев. 2010

Вроде сачал отсюда последнюю версию но ничего не изменилось.
http://www.hu.freepascal.org/lazarus/
Использовал сцену стандартную, без своих изменений.
Мб стоит качать с свн? Если да скиньте пожалуйста ссылку на свн?

#6
23:09, 7 фев. 2010

Хммм.
Мне сказали что ночного билда достаточно. В том линке что ты дал - ночные билды, т.е. теоретически там фикс должен быть включен в первые же сутки после апдейта в SVN, как компилер ночью посчитал что код компилируем и автоматически собрал его и захостил на сервере. Впрочем, я с лазарусом сейчас уже довольно длительное время не работал, ставить из свежего SVNа и разбираться времени нет. В багрепорте утверждают что дефолтная демка с OGLом исправлена (Lazarus/components/opengl/example), т.е. в ночном билде она должна работать с включенным манифестом. Если не работает - значит билд ты скачал без фикса или хз что там за мусор у них творится. Если демка работает а ГЛсцена нет - значит это проблема в сцене, решение куда глубже и я тем более не знаю как его достать. Что печально, серо и уныло, т.к. мне тоже не помешал бы вывод огла с манифестом и модными лонгами окна. Как в дельфи. :)
Как мне сказал один чиж, сцену щас никто не тянет под лажарусом. На фриноде я говорил с одним челом который якобы занимается её разработкой, но всё очень тухло т.к. он пишет её походу под линь и предлагает мне самому занятся расследованием этого кейса под венду.
Если огл юзаешь для не слишком активного вывода, можешь попробовать рендерить в битмапу а её потом копировать на канвас. Как я уже сказал, это медленно. Помимо этого, в сцене (по крайней мере, когда я ковырялся) был ряд багов с методами копирования содержимого в битмапу. У виртуального буфера вьюпорта GLLCLViewer попытка скопировать вызывала null object reference (или что-то подобное), и только кажись у GLMemViewer я смог скопировать (могу что-то путать, было давно) в битмапу и то он писал вверх-ногами, так что приходилось ещё и отражать её перед выводом.
Впрочем, возможно ты найдёшь способ пофиксить ордер байтов при лонге окна с WS_LAYERED и твой костыль будет работать быстро. Но я не настолько углублялся в программирование и без понятия, как это делается.

#7
7:01, 8 фев. 2010

Я занимаюсь адаптацией сцены под лазарус на офф сцене. За год я перенес многие рабочие фишки со старой версии сцены которая используется на сайте http://www.lazarus.freepascal.org/.
Так же в сцене изменилась поддержка форматов текстур они работают намного лучше и эффективнее чем раньше спасибо за это YarUnderoaker.

Некоторые вещи такие как редактор материалов оказались не работоспособными в винде пришлось их эмулировать через мемори вьювер. (это проблема совместимости вьювера и TFrame)
А в линуксе код мемори контекста оказался не разработанным вовсе по этому после того как закончу с вьювером в винде буду продолжать разработки в линуксе.
В частности меня интересует как реализовать антиалиазинг(мультисемплинг) я подключал под это дело FBConfig в контексте но мульти сэмплинг так и не заработал, хотя если через утелиту нвидиа подлючать там все это хозяйство работает.
Думаю сделать чистую демку с GLX и проверить работоспособность кода, и было бы неплохо связатся с человечком который занимается разработками в линуксе!

Рендер в битмап не выход так как там нету поддержки аппаратного ускорения и как мне чел один сказал что при этом отключается ОГЛ вышел 1.4.

По этому как вариант буду продолжать идею рендера в канву кустом контрола, с отлюченным у кустом контрола функцией отрисовки. При этом методе вьювер работает даже при включенном манифесте!

Проверил ночную сборку которую качал вчера, все так же глючит.

К стати я не настолько сильный программист что бы знать все тонкости по этому спрашиваю здесь мб кто ответит!
Так что теперь задаю все тот же вопрос, как заставить парента не отрисовывать чилдрен, контрла?!?!

#8
12:59, 9 фев. 2010

Predator
Посмотри сборку Lazarus под названием CodeTyphon. Там всё это уже реализовано.

#9
16:42, 9 фев. 2010

Спасибо, посмотрю.

#10
21:27, 9 фев. 2010

Посмотрел я сборку, в принципе все работает, точно так же как и у меня, но при ресайзе возникают баги, точно так же ак и у меня :)

#11
23:32, 22 фев. 2010

Agent_AL что за фринод и что за чел пишущий под линухой? Я в GLScene столкнулся с проблемой не работоспособности антианлиазинга под линуксом, по этому ищю любую инфу по этому поводу.

#12
1:42, 23 фев. 2010

Freenode
Канал, собственно, #glscene. Ник чела не помню, поспрашивай.

#13
20:43, 5 апр. 2010

Проблема решена. Через неделю - две выложу в репозиторий сцены подправленный вьювер. Проверял на платформах XP и 7

#14
22:11, 5 апр. 2010

А что ты сделал?
Кстати, где сейчас девелоперы с GLScene вращаются? У них есть сайт какой-нибудь? Где репы находятся? Старый сайтег на www.glscene.org совсем стух и у меня только мейл-рассылки остались, а хотелось бы почитать, чего они нового сделали за последние два года.

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.