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

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

Пароль



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

Забыли пароль?
Запросите новый здесь.
Темы форума
187 - Bullet Heaven
Вчера, 20:39
 Mefistofel
187 - ?
21.11.2024
 Dan
Galactic Showdown -…
21.10.2024
 KregHek
Новый IGDC
5.08.2024
 rimush
186 - Strategy!
15.07.2024
 VoroneTZ
WoL
3.07.2024
 Darthman
Привет выжившие
21.05.2024
 GeePee
185 - RPG
9.02.2024
 Vaskrol
В каком банке открыт…
24.01.2024
 Darthman
185 - ?
30.12.2023
 Mefistofel
Сейчас на сайте
Гостей: 13
На сайте нет зарегистрированных пользователей

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

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

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

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

Опубликовано 27.04.2021 05:12 (4 года назад)    #
возможно вопрос не по теме, но почему именно атлас, а не TImageList?
Bullet Heaven:В разработке
 0%
Shirson
Avatar пользователя

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

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

Bullet Heaven:Не участвую.
VoroneTZ
Avatar пользователя

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

Опубликовано 27.04.2021 07:42 (4 года назад)    #
Вероятно, поможет GL_CLAMP_TO_EDGE.
Bullet Heaven:Не участвую.
Shirson
Avatar пользователя

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

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

Bullet Heaven:Не участвую.
Mefistofel
Инженер‑космогоник
Avatar пользователя

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

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

Опубликовано 03.05.2021 20:49 (4 года назад)    #
Я грешу на ошибку округления/деления, потому что изначально текстурная фильтрация (я в этом деле ещё не очень волоку, это мой первый обёртК для OpenGL) изначльно задана как GL_NEAREST для обоих случаев скейла. Тем более, что проявляется загон только по вертикали (т.е. при обработке тектурных координат по малой стороне атласа, который 512х1024).
Поджатые тектурные координаты вполне себе работают.
Я эксперементировал с разными вариантами, включая и пустое пространство и клампинг, но это всё больше роляет при фильтрации отличной от манхетенновской (т.е. не GL_NEAREST, а GL_LINEAR, например)
Пока результат фикса с поджатием меня устроил, для текущих условий, посмотрим, как будет дальше. Судя по экспериментам, клампинг на фильтр и экструд на текстуре (как раз отсутуп в один пиксель с цветом границы) с этим справляется.
Bullet Heaven:Не участвую.
Перейти на форум:
Конкурсы
Открытые конкурсы:
Bullet Heaven

Старт: 23 ноября 2024г.
Финиш: 4 декабря 2024г.

Участники: 4
Недавние конкурсы:
 186 - Strategy
 185 - RPG XII
 184 - Arcade II
 183 - Novel
 182 - RPG XI
 Все конкурсы
Случайная игра
Мини-чат
Вам необходимо залогиниться.

Архив чата

26,203,893 уникальных посетителей

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