20 Мая 2024, 07:33:43
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Визуализация, Шейдеры > Дергание изображения во вьюпорте при вызове канала RTT
Дергание изображения во вьюпорте при вызове канала RTT
(Прочитано 6856 раз)
  [1]
Печать
dfx | ** | Пользователь | Сообщений: 95 | « 09 Сентября 2011, 02:36:15 »
Дергание изображения во вьюпорте при вызове канала RTT |
0
Всем привет.

Столкнулся с небольшим багом.
Все динамически создаваемые текстуры, например, привьюшки моделек, всплывающие подсказки и тд создаются одним вызовом РТТ в необходимом разрешении. Чаще это разрешение меньше размера вьюпорта и приходится менять его размеры на время создания.
Если за текущий кадр был вызов такой функции(со сменой размеров вьюпорта), то конечное изображение меняется. Толи смещается на пиксель, толи маштабируется, но оно отличается от того, что должно быть. А так как смещение происходит только за один кадр, то это смотрится как дерганье финальной картинки в момент, когда вызывалась подобная функция.
Иногда помогает ресайз основного вьюпорта после запуска проекта, иногда - смена последовательности вызовов функций. Вобщем, бред какой-то.
Что является причиной такого поведения? Может кто то уже сталкивался с этим и решил проблему?
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #1 10 Сентября 2011, 20:00:33 »
Re: Дергание изображения во вьюпорте при вызове канала RTT |
1
2 возможные причины:

1) в 9 ДХ чтение текстуры идёт с центра текселя. (баг устраняется смещением текстурников на пол текстеля)

2) бонально не верный порядок отрисовки
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #2 12 Сентября 2011, 06:19:20 »
Re: Дергание изображения во вьюпорте при вызове канала RTT |
2
Привет, Sqwer.
Спасибо, что помогаешь.
Порядок отрисовки, вроде, верный. Насчет чтения тектуры тоже не уверен.
Тут проще показать, чем описать ситуацию.
Прикрепляю файл.
Смысл в том, что после того, как RTT уже был вызван и размеры вьюпорта востановлены, рисуется объект без всяких RTT, но разрешение после восстановления всеже отличается от разрешения предыдущего кадра на пару пикселей.
В сцене это видно. В текстовый канал добавляются строки о том, что значения разрешений не верные, если они не равны референсу - разрешению, которое было вначале. Т.е. При каждом вызове RTT разрешение вывода отличается. Откуда этот баг - хз(.
З.Ы.При ресайзе окна вручную, надо нажать пробел, что бы обновить эти значения.
* RTT_Bug.cgr (71.71 Кб - загружено 776 раз.)
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #3 12 Сентября 2011, 06:32:59 »
Re: Дергание изображения во вьюпорте при вызове канала RTT |
3
Похоже проблема в функции "Set Viewport". Когда поменял ее на функцию "Set Viewport in pixels" проблема ушла.  Смеющийся Ура!
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #4 13 Сентября 2011, 01:44:52 »
Re: Дергание изображения во вьюпорте при вызове канала RTT |
4
Разрабы Квеста любят переименовывать стандартные ДХ функции.
Вроде она в оригинале называлась Set the Scissor Rectangle


D3D10_RECT rects[1];
  rects[0].left = 0;
  rects[0].right = 640;
  rects[0].top = 0;
  rects[0].bottom = 480;

  D3DDevice->RSSetScissorRects( 1, rects );

Рад , что всё получилось. На форум часто не могу зайти  В замешательстве
 
  [1]
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Визуализация, Шейдеры > Дергание изображения во вьюпорте при вызове канала RTT
Перейти в: