Автор Тема: Программа-просмотрщик объектов: требуется помощь программистов!  (Прочитано 16024 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Онлайн Chuzhoi

  • Тень
  • Сообщений: 9279
Zontik же сказал, что использует bsp.exe с ключом -N. Естественно, в этом случае возникают проблемы с прозрачностью.

Оффлайн Zontik

  • Призрак
  • Сообщений: 14285
    • Тёмное место
Да если бы все было так просто. Ключ я только с неделю как начал использовать. То есть будут еще проблемы? Отлично.
Возьмите иву от Vladimironaq... тьфу ты, невозможно выговорить. В общем, на сайте есть такая модель. Попробуйте поставить ее в комнату и походить вокруг. Уж не знаю, подбирал ли он к ней ключи. Но там вроде как спасает RenderOrder, если угадать правильный параметр.
Дайте глазам отдохнуть! Тёмное место

Оффлайн Force

  • Тень
  • Сообщений: 8032
Последние новости по багфиксам:
- сделана сортировка файлов как в винде
- число знаков после запятой уменьшено до двух, и менее
- открытие файла перетаскиванием на окно программы
- открытие первого файла по умолчанию в каталоге по умолчанию
- доделан поиск текстур по обозначенным приоритетам, проследить за процессом можно будет, заглянув в лог.

Это около 20% из найденных вами багов :). Так что, огромное вам спасибо за помощь и поддержку! :yes:

Оффлайн HellRaiser

  • Мастер Теней
  • Сообщений: 4242
 :doh: блин. Забыл написать про сортировку ( а написать хотел, т.к. совсем не понял суть той претензии).

Force
У тебя там как построение списка файлов реализовано? То есть как система находит (типа findFirstFile/findNextFile)? Если да, то нафиг никакие дополнительные сортировки не нужны. Ибо отсортировать в проводнике и в тотале можно как угодно, а всякие смотрелки обычно упорядочивают только по имени.

Оффлайн Boris3000

  • Мастер Теней
  • Сообщений: 3247
  • Noisemaker
HellRaiser
А не про числовую ли сортировку, часом, речь? Мастдайный вендовый проводниГ воспринимает рядом стоящие цифры в имени файла исключительно как число, а не набор независимых символов, со всеми вытекающими для сортировки. FAR же, которым я пользуюсь, умеет и так и так, но по умолчанию сортировка посимвольная. Поэтому для меня слова "как в винде" означают числовую сортировку.
Gigabyte GA-X48-DS4 / Core2-Quad Q9650@4.1GHz / Hynix original DDRII-800 2x2GB /
Sapphire Dual-X <Radeon R9 270> 2GB GDDR-5 / SoundBlaster X-Fi Xtreme Gamer Fatal1ty Pro Edition /
2xSSD Intel X25-M 120GB в RAID 0 / Samsung SyncMaster 757DFX (труба 1024х768) /
Windows XP Professional SP3 VL 32-bit + Windows 7 Enterprise SP1 U 64-bit / Catalyst 14.4 + 15.12 / ND 1.26

Оффлайн Force

  • Тень
  • Сообщений: 8032
HellRaiser, сортировка по имени работала, сортируя файлы как строки, то есть 1,10,2,20... С учетом того, что в винде это не так, а список файлов пока не отображается, было решено сделать сортировку как в винде. Мне она нравится, удобно и человекочитаемо: 1,2,10,20... Тем более, уже было готовое решение.

Оффлайн Force

  • Тень
  • Сообщений: 8032
Boris3000, да, там смесь строковой и числовой.

Оффлайн Force

  • Тень
  • Сообщений: 8032
Всем привет. Давно не сообщал о продвижении разработки.

На днях переписал шаблонизатор для подстановки данных в интерфейс, и он стал в 15 раз быстрее, при этом функциональнее, добавлены ветвления. Перестал быть узким местом при загрузке. При этом каждый сможет отредактировать интерфейс как ему вздумается... Понятно, что для просмотрщика это не особенно нужно, но возможность такая есть.  Хотя она и была, просто шаблонизатор был примитивнее и медленнее.

Ещё в процессе тестирования выяснилось, что узким местом является загрузка текстур. Как оказалось, у меня было неверное представление о процессе работы с гпу в нескольких потоках. В результате я отказался от нескольких контекстов OpenGL в разных потоках. Это заметно ускорило первую загрузку, но пришлось для этого переделать загрузку текстур на так называемый стриминг. Пока ощутимой разницы нет, но в тестах иногда действительно оно быстрее 😊. А вообще, еще предстоит переделать работу в потоков с подготовкой данных для передачи в OpenGL, тогда подгрузка новых данных должна стать совсем легковесной.

Так что работа кипит. Правда пока для конечного пользователя это не будет сильно заметно, увы. Хотя, на слабых машинах должно порядочно ускориться.

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4186
  • Нёмыч
пришлось для этого переделать загрузку текстур на так называемый стриминг
В чём он заключается?

Оффлайн Force

  • Тень
  • Сообщений: 8032
nemyax, в использовании Pixel Buffer Object.

Оффлайн Force

  • Тень
  • Сообщений: 8032
ву-ху :sleep:

Это было феноменально, эпичнейше. Масштабнейший рефакторинг завершился успешно, это было увлекательно, но стоило титанических усилий. Что это дало:
- убрана инициализация OpenGL из параллельных потоков (прирост в скорости при инициализации приложения)
- новые потоки теперь создаются только при необходимости - высокой наргузке (прирост в скорости при инициализации приложения)
- убрана избыточная синхронизация гпу с цпу (уменьшение времени ожидания увеличивает скорость выполнения приложения)
- убрана работа с OpenGL в параллельных потоках, это упростило сам код, избавило от вышеописанных синхронизаций и сделало работу потоков более прозрачной (упрощение кода приводит к ускорению багфиксов и упрощению добавления новых фич)
- вся программа была переведена на поддержку юникода для корректной работы с русскими именами файлов на любых системах (windows, linux). Эпичнейшим был именно этот пункт. И "ву ху" относилось тоже к нему. Да, мощно было...
- добавлена поддержка старого (legacy) железа. Программа успешно работает с OpenGL 2.1 даже на XP SP2 (это отдельный файл, откомпилированный специально для SP2, правда, он не умеет работать с русскими именами, потому что система больше не поддерживается Microsoft. Извиняйте, компромисс достигнут. На SP3 всё работает корректно. ;) ).

Да, получается, всё это было сделано именно ради поддержки старого железа, но получилось, что проект стал лучше, удобнее и проще, поэтому, работа пошла однозначно в плюс. В кучу плюсов! C++ же...

Ну вот, а теперь, можно продолжить пилить "хотелки", чтобы следующий билд вышел бы реально удобнее в использовании. Думаю, теперь дело пойдет быстрее - переделки не такие масштабные.
« Последнее редактирование: 08 Июня 2018 13:33:33 от Force »

Оффлайн Zontik

  • Призрак
  • Сообщений: 14285
    • Тёмное место
Все-таки есть польза от старого железа, а?
Дайте глазам отдохнуть! Тёмное место

Оффлайн Force

  • Тень
  • Сообщений: 8032
:laff:, да ради него приходится учить матчасть!

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4186
  • Нёмыч
Force
А чего с гуём решил?

Оффлайн Force

  • Тень
  • Сообщений: 8032
nemyax
Тут такое дело, что слишком многое уже сделано и слишком многое придется менять для перехода на эту либу. Да и результат, я почти уверен, меня не устроит. Ты думаешь я с шаблонами просто так возился что ли? :) Я честно пытался не изобретать велосипед и взять "самый быстрый шаблонизатор на си - CTPP", который по факту оказался медленнее моего в три раза (ну, это и понятно - у меня очень узкие задачи и простейшее использование). При этом эта небольшая либа оказалась жутко кривой при установке и при компиляции, слишком громоздкой при использовании, причем абсолютно без документации, так еще и работала в три раза медленнее моего кода. Это я всё к тому, что своя ноша не тянет и она способна на большее в руках своего создателя. Я знаю слабые места и всё обдумываю варианты их решения. В частности, следующий билд, скорее всего, выйдет с возможностью выбора модели из списка, а сам этот список - дико тормозит при пролистывании. Архитектурная особенность интерфейса + "скелетная анимация" на цпу. Проблему придется решать.

Зато у ГУИ - есть неоспоримое преимущество - вывод ошибок для случаев, когда приложение ну совсем не может стартануть. В случае, когда Зонтик будет запускать свою легаси-версию в русскоязычной папке у меня просто нет никакой возможности сообщить о проблеме: консоли в винде нет, путь к папке программы имеет не поддерживаемые символы, следовательно лог положить некуда. Не факт даже, что получится положить лог в какой-нибудь из каталогов по пути до программы, может не хватить прав. А если получится - кто его там найдет? Да и не красиво это. Единственный выход - гуи-сообщение об ошибке. Вот этого нет, да. В остальных случаях всё можно написать в самой программе уже доступными средствами рисования.