Так как проект я начал без какого-либо технического задания, естественно у меня нет никакого плана развития для проекта, я его разрабатываю "как есть", так что приступим.
Прежде всего исправил окно сообщений, сделал его не только поверх всех остальных окон, но и включил перенос строк, чтобы не нужно было использовать горизонтальную прокрутку:
Но тут же обнаружил весьма неприятную проблему, в некоторых случаях текст может быть перекрыт вертикальной полосой прокрутки, не то чтобы эта проблема была критичной, но я захотел её решить...
Вообще решение проблемы максимально простое, достаточно отключить нумерацию строк, но это тоже стало проблемой, ведь теперь не видно начала строки.
Впрочем, и это проблему я решил, теперь окно сообщений работает как надо:
Достаточно было просто добавить дефис перед строкой сообщения, и проблема решена:
Конечно же я немного поработал над кодом, добавил в массив путь до корневого элемента, и теперь всё выглядит гораздо интереснее:
Наверняка это выглядит страшно, но это хорошо:
Хотя ладно, нужно бы оптимизировать немного код, ведь мне самому будет сложно с этим работать когда проект станет ещё больше...
Было - стало:
Похоже всё стало ещё страшнее, ничего, настоящие эксперты и так всё поймут, особенно зная что я не программист, а диванные "эксперты", ну это уже их проблемы...
О неумности некоторых фанатов Linux и накрутке плюсов в комментариях Overclockers
Конечно, такие изменения требуют изменений и "зависимого" кода, но пока проект небольшой это не вызывает проблем, как некоторые диванные "эксперты" скажут: Да это же уровень Hello World!
Думаю я ещё изменю названия элементов пока кода мало, над названиями следует поработать, ибо потом будет сложнее... В любом случае теперь получить нужный путь гораздо проще стало, и это хорошо.
Ещё некоторое время я занимался всякой мелочью, но ничего кардинального. В коде там небольшие правки, кнопку немного передвинул, вынес потом в отдельный слой все кнопки, ведь у меня есть на них некоторые планы...
В итоге я взялся за работу над шрифтами, функцию настройки шрифта доработал с учётом того, что через неё можно будет настроить не только основной шрифт, но и шрифт пользователя, заодно добавил "значения по умолчанию", чтобы не нужно было писать много аргументов при вызове функции.
Короче, теперь в эту функцию можно впихнуть больше и меньше одновременно:
Теперь установить шрифт проще простого, осталось так же поработать над функцией chi_font_apply...
Так гораздо лучше, теперь я могу вызвать функцию откуда угодно, и скормить ей что нужно:
Дальше мой взор устремился к относительным путям... Хорошая получилась "гирлянда", красивая:
Настало время поработать над функцией сохранения локализации в файл, а работу над функцией загрузки локализации я оставлю за кадром, там всё аналогично, только в обратном порядке.
Думаю можно было это дело реализовать через цикл, но сойдёт и так!
Я долго думал над тем, чтобы сделать локализацию не только для элементов управления, но и для информации в оверлее, однако нет, я не буду этого делать, ибо не вижу пользы от перевода стандартных слов: GPU, FPS, API и т.п., скорее будет только неразбериха если это переводить, потому нет, и ещё раз нет.
Это линуксоиды не знают меры в извращениях, от чего у них даже языковая панель работает через одно место, которым справляют нужду в туалете...
Теперь нужно что-то сделать с захламлённостью, я только начал по сути проект, а уже информации на треть экрана, так не пойдет, ведь DeviceID можно убрать, количество памяти на видеокарте тоже можно убрать, как и версию драйвера, хотя это я ещё подумаю.
В итоге я набросал новое окно, пока оно пустое, но именно сюда я планирую перенести всю подробную информацию о системе:
Ладно, окно есть, как теперь вывести информацию о системе пользователя? Можно всё вручную по каждому пункту расфасовать, и может быть я это даже сделаю в будущем, но сейчас такой вариант мне не подходит.
Тем более хотелось бы реализовать доступ к информации со стороны пользователя, там скопировать...
Так как у меня уже есть крайне полезное окно сообщений, то его и использую, только немного поправлю размер чтобы влазило больше информации, таким образом окно стало полезным не только для отладки и вывода важных сообщений, но и для вывода информации о системе.
Хотя вывод некоторых утилит всё же нужно обработать перед отправкой в окно...
Может быть моё текущее решение не очень хорошее в плане оптимизации, но оно работает:
Целая куча вызовов wmic, мне следовало сделать один вызов, собрать строку вывода, и разобрать её на составляющие отдельной функцией... Но учитывая что над этим проектом уровня "Hello World" я работаю один, не вижу ничего плохого, чтобы оставить пока это дело "как есть".
Всё равно пользователя не будет заботить как оно работает в исходном коде, и насколько этот код красив, пользователям важно чтобы оно работало и давало результат:
Далее обратил внимание на шрифты, и было решено немного поправить размеры, а для окна сообщений задать размер поменьше чем у всего остального.
Да, на Android смартфонах это будет выглядеть очень мелко, но костыли для смартфонов подождут, всё же целевая платформа моего бенчмарка это Linux дистрибутивы и Windows. Ох, сейчас набегут линуксоиды и будут приравнивать Android к дистрибутивам Linux (Desktop), и пофиг, что Android никаким боком к дистрибутивам Linux не относится кроме "названия ядра"...
Ещё я не собираюсь сейчас работать над правильным масштабированием интерфейса:
Можно конечно сделать вот так:
И даже может показаться что проблема решена, но у такого подхода есть проблемы, по крайней мере они были в Godot Engine версии 3.5.1, не в курсе про версию 3.5.2, исправили или нет, но я больше не доверяю этому функционалу, потому буду писать свой функционал...
Гораздо важнее сейчас другое, пора бы обновить иконку бенчмарка...
Я не стал сильно выдумывать, просто сделал скриншот кубика и обработал немного, буквально пара кликов в графическом редакторе Krita, и ещё пара кликов в "Quick Any2Ico" для преобразования в формат ico.
Теперь у файла есть иконка проекта, правда она есть только в исполняемом файле для Windows, увы, но кривые Linux дистрибутивы ещё не доросли до таких вещей, потому исполняемые файлы для Linux так и будут "голыми"...
Не знаю зачем, но я открыл диспетчер задач, а там целая магия чисел... Сейчас у меня свободно 11535 МиБ ОЗУ, 55744 МиБ доступно, 44488 МиБ кэшировано, 41888 дескрипторов, и время работы 4 суток 14 часов без учёта времени в режиме сна.
Хотя лучше конечно смотреть такую информацию более специализированными инструментами, а то диспетчер задач Windows представляет информацию как выгоднее корпорации, например, график памяти в диспетчере задач Windows показывает использованную память, причем не указано конкретно, что именно они там показывают в графике, а занятая память отображена как "выделенная память" отдельной строчкой. Зачем так сделали? Очень просто, используемая память обычно меньше чем занятая, и корпорации выгоднее показать в лицо пользователю меньшее значение.
Так пользователь смотрит и видит, 9.48 ГиБ всего, значит хватит с головой 16 ГиБ ОЗУ для нормальной работы, правда на самом деле занято 13 ГиБ ОЗУ, а там ещё кэшем занято 43 ГиБ оперативной памяти, по итогу едва хватило 64 ГиБ ОЗУ, а пользователь смотрит на график в диспетчере задач, и думает что 16 ГиБ просто за глаза будет...
Ладно, что-то я отвлёкся, далее набрасываю больше информации о сцене, возможно некоторую информацию потом уберу из мониторинга...
Набрасываю ещё больше информации, возможность изменять настройки MSAA и анизотропной фильтрации, правда как выяснилось, Godot Engine немного неполноценный в плане работы с анизотропной фильтрацией, и изменение настройки ничего не меняет, по идее до полного перезапуска...
А после я раскрутил кубик, почему бы и нет, хорошо пошло:
MSAA 16x довольно сильно влияет на FPS, но это всё ещё не позволяет полностью нагрузить видеокарту мою, хотя цели такой и не стояло на данный момент, просто забавный факт:
А что до сглаживания FXAA, пока я реализовал только управление сглаживанием MSAA, управление анизотропией вообще заблокировал, всё равно смысла пока нет в ней, ну а управление FXAA пожалуй реализую в следующих версиях ChimbaBench.
Точно, есть же кнопка "Set AA", она ничего не делает, но я решил не убирать её сейчас... Думаю для некоторых это будет забавным открытием, что кнопка ничего не делает.
На этом пожалуй хватит для версии 1.3, завершу в стиле "было - стало":
-
--
---
Заключение
Вот я и закончил работу над ChimbaBench версии 1.3, вроде уже такая версия большая, а я всё ещё занят пользовательским интерфейсом... Увы, но пользовательский интерфейс очень важен, хотя я возможно немного переборщил с этой частью проекта.
Хейтеры наверняка будут упрекать меня за код, мол некрасиво, неправильно, будут изливая негодование всячески просить чтобы я бросил работу над проектом. Впрочем, пусть негодуют диванные "эксперты", раз просят чтобы я прекратил, значит нужно давить до конца и не отпускать!
Мне даже стало интересно, а скольких разработчиков уже морально задавили неадекватные фанаты Linux? Думаю очень многие были угнетены, доказательство тому вечно кривые дистрибутивы Linux и софт утопающие в болоте зависимостей.
Ну да ладно, нужно проверить свой бенчмарк, в среде Windows ясное дело никаких проблем, так что сразу перейду к Linux.
Ох и просел же FPS при усложнении сцены...
Но я приметил забавный факт, MSAA 8x/16x не сильно повлияли на FPS в среде Linux при работе через LLVM 11.0.1 и LLVM 13.0.0, вообще я ожидал что частота кадров упадет до нуля или меньше, но в итоге падение производительности вообще незначительное:
Да, 7-8 FPS это не очень приятно, но что поделать, проект нужно ведь развивать, мне просто нужно позаботиться о том, чтобы была и простая сцена в бенчмарке для слабых ПК.
Пожалуй пора заканчивать статью, ссылка на репозиторий ChimbaBench: ( github.com/Shedou/ChimbaBench ).
Так можно найти исходный код и скомпилированные исполняемые файлы проекта.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.