Навигация
Поддержать материально
Steam Greenlight

Логотипы
Медальки
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Темы форума
178 - ?
21.09.2021
 Dan
Образование и работа
15.09.2021
 ZblCoder
2д художник
22.08.2021
 PapkaI_Igrodel
177 - One Button Str…
11.08.2021
 cdmlex
177 - ?
20.07.2021
 StormT_GMS
176 - Scroller V
11.07.2021
 StormT
Фотки тред
23.06.2021
 StormT
Крошечный движок
8.06.2021
 Kaps
The Great tribes - […
3.06.2021
 Zemlaynin
175 - Platformer!
2.06.2021
 Shirson
Сейчас на сайте
Гостей: 3
На сайте нет зарегистрированных пользователей

Пользователей: 1,769
новичок: TwentySeven
Обсуждение «Вертикальный мусор в OpenGL»
Shirson
Avatar пользователя

Опубликовано 27.04.2021 04:21 (5 месяцев назад)    #
Всем!

Обратил внимание, что при некоторых масштабах изображения, отличных от "чистых" х1 х2 х3, при выводе на OpenGL появляется "мусор", в виде вертикальных линий. Может кто сталкивался с таким и знает как это забороть? Это связано с тестами глубины или куда рыть?
(проекция орто, если что, тест глубины выключен)
Shirson
Avatar пользователя

Опубликовано 27.04.2021 04:56 (5 месяцев назад)    #
Повнимательнее присмотрелся к этм полосам, решил поСЧупать текстурные и вертексные координаты.
Вобщем, похоже OpenGL нахватывает лишнего при выемке части тектуры из одной большой. Атлас у меня 512х1024, вот что-то там явно не так с округлениями при ХХХ/512, хотя использую GLdouble.
Вобщем, вроде решил проблему, причём ломовым способом - по горизонтали поджал текстурные координаты на 0.0001 и мусор пропал (впроде как). Надеюсь, кому-нибудь пригодится.
VoroneTZ
Avatar пользователя

Опубликовано 27.04.2021 05:12 (5 месяцев назад)    #
возможно вопрос не по теме, но почему именно атлас, а не TImageList?
Shirson
Avatar пользователя

Опубликовано 27.04.2021 05:59 (5 месяцев назад)    #
TImageList содержит изображения для работы в VCL, а я всю графику написал на OpenGL. Вообще, вещи из разряда "мягкое vs тёплое"
Можно, конечно, загружать тонну картинок в отдельные тектсуры (я так раньше и делал), но с одной текстуры рендер работает заметно быстрее.
А TImageList, по сути, жопа капризная. Ни разнородных по размеру спрайтов загрузить, ни вменяемо прозрачность поддержать. В VCL с ним мириться ещё можно, но для OpenGL он вообще не в тему.
Я для себя вывел "формулу успеха" - текстурный атлас PNG. Решаются все проблемы скопом (для моих целей, конечно же, это не убервафельное решение на все случаи жизни).

редакция от Shirson, 27.04.2021 06:00

VoroneTZ
Avatar пользователя

Опубликовано 27.04.2021 06:43 (5 месяцев назад)    #
хм, буду знать
просто планирую чуть позже тоже на делфе что то собрать, но только на firemonkey
прошлый опыт загружал процессор чуть бы не на 100%)
Hexman
Avatar пользователя

Опубликовано 27.04.2021 07:42 (5 месяцев назад)    #
Вероятно, поможет GL_CLAMP_TO_EDGE.
Shirson
Avatar пользователя

Опубликовано 27.04.2021 13:45 (5 месяцев назад)    #
В некотором роде помогло... :) (после конкурса буду разбраться)

редакция от Shirson, 27.04.2021 13:46

Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 27.04.2021 20:04 (5 месяцев назад)    #
Это реально похоже на режим развертки текстур
Нужен Clamp, а используется repeat, он стандартный.
Doj
Avatar пользователя

Опубликовано 03.05.2021 11:22 (5 месяцев назад)    #
Не хватает деталей: как выглядит атлас и какой режим текстурной фильтрации в OpenGL выбран. Кажется, что нужно (1) либо в атласе сделать отступ в 1 пиксель вокруг каждой текстурки с цветом пограничного пикселя, (2) либо полностью отключить в OpenGL текстурную фильтрацию, чтобы соседние пиксели не замешивались.
Shirson
Avatar пользователя

Опубликовано 03.05.2021 20:49 (5 месяцев назад)    #
Я грешу на ошибку округления/деления, потому что изначально текстурная фильтрация (я в этом деле ещё не очень волоку, это мой первый обёртК для OpenGL) изначльно задана как GL_NEAREST для обоих случаев скейла. Тем более, что проявляется загон только по вертикали (т.е. при обработке тектурных координат по малой стороне атласа, который 512х1024).
Поджатые тектурные координаты вполне себе работают.
Я эксперементировал с разными вариантами, включая и пустое пространство и клампинг, но это всё больше роляет при фильтрации отличной от манхетенновской (т.е. не GL_NEAREST, а GL_LINEAR, например)
Пока результат фикса с поджатием меня устроил, для текущих условий, посмотрим, как будет дальше. Судя по экспериментам, клампинг на фильтр и экструд на текстуре (как раз отсутуп в один пиксель с цветом границы) с этим справляется.
Перейти на форум:
Конкурсы
Открытые конкурсы:
Активных нет
Недавние конкурсы:
 177 - One button strike
 176 - Scroller V
 175 - Platformer IV
 174 - RPG IX
 173 - Industry III
 Все конкурсы
Случайная игра
Мини-чат
Вам необходимо залогиниться.

Архив чата

22,636,529 уникальных посетителей

Создано на базе русской версии PHP-Fusion copyright © 2003-2006 by Nick Jones.
Released as free software under the terms of the GNU/GPL license.