8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 110
|
|||||||||||
SDL3_image - не отрисовывается текстура23.02.2025, 17:23. Показов 9857. Ответов 123
Не отрисовывается текстура! Путь, формат img, установки и подключения dll - проверил трижды. При наложении текстуры, просто белое поле.
Участок кода (ошибок нет):
0
|
23.02.2025, 17:23 | |
Ответы с готовыми решениями:
123
Использование opengl. Не отрисовывается квадрат Удаление текстур OpenGL
|
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 110
|
|
11.03.2025, 19:27 [ТС] | |
Так дело в том, что все включено, а диагностики нет.
Пишет: Microsoft Visual Studio не удалось запустить ваш сеанс диагностики. В нэте пишут запустить службу "VSStandardCollectorService150" - пробую запустить - ошибка запуска. У меня не изучения C++. а борьба с геморроем на компьютере. Сейчас ищу решения.
0
|
11.03.2025, 20:04 | ||||||||||||||||
Отложите эту проблему с диагностикой на потом. У вас без неё, вроде, всё нормально стало собираться.
В этом сообщении на скриншоте нормально выводится изображение. Кстати, для этого персонажа есть спрайтовая анимация? Можете в архиве приложить, если это не нарушает чьи-то авторские права? Лучше двигать персонажа с помощью Box2D - это сильно упростит и убыстрит процесс программирования игры. Вам не нежно будет самому проверять не упёрлись ли вы в забор, стену или другие препятствия. Иначе вам придётся каждый кадр самому пробегаться по всем объектам и проверять, не пересекли ли вы его границу. Я позже скину маленький пример, как перемещать персонажа. Перепишу следующий пример с Pygame и PyBox2D на SDL3 и C++, но со спрайтами: Можете попробовать у себя его запустить. Здесь управление персонажем. Он не может пройти сквозь стену и вентилятор. Когда персонаж касается стены и вентилятора, то в консоль выводится сообщение.
debug_drawer.py
0
|
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 110
|
|
11.03.2025, 20:24 [ТС] | |
Так это же на Python. Я начинал изучать Python - кое чего достиг в изучении. Вышлю архив - игрушка 2D. В общем там все понятно, но мне ни это нужно было. Начал писать IPTV плеер на питон. но то что я хотел (функционал) - знающие люди написали, что требуется писать на С, так как возможности Python ограничены.
0
|
12.03.2025, 13:07 | |
Я нашёл этот пак через Chrome с помощью: Menu > Search with Google Lens: https://pixelfrog-assets.itch.io/tiny-swords Спрайты рыцаря с мечом находятся в папке: Factions/Knights/Troops/Warrior
![]()
0
|
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 110
|
|
12.03.2025, 15:41 [ТС] | |
ОК. спасибо.
Реализация 3D - пример - https://examples.libsdl.org/SD... eneye-008/ Движение W, A, S, D + мышка
0
|
13.03.2025, 13:34 | |
Надо стараться расставлять расставлять приоритеты и разбивать задачи на подзадачи. Вы решили проблему с отображением спрайта. Получили изображение рыцаря. Надо двигаться дальше. Ставить следующую цель. Если задача кажется сложной, то надо разбивать её на подзадачи. Например, у вас есть код, как сделать спрайтовую анимацию на SDL3 для бегущего человечка. В паке ассета выше с рыцарем есть спрайтовые анимации покоя, ходьбы, атаки и т.д. Реализуйте перемещение рыцаря с анимацией ходьбы и анимацию покоя. Добавьте препятствий, чтобы рыцарь не проходил сквозь них - для этой цели лучше сразу взять Box2D, как в примере в сообщении 102 на Pygame и Box2D. Box2D очень сильно облегчит вам процесс создания игр. Знания этого физического движка пригодятся, например, если вы потом возьмёте Unity. С помощью Box2D можно переводить эти туториалы с Unity и C# на SDL3 и C++: http://noobtuts.com/unity/ (сайт работает с VPN). Unity использует Box2D и в Unity практически точно такие же настройки для 2D-физики, как в Box2D. Добавьте мешочки с золотом из пака и отображайте собранное количество монет в виде текста + число. Разбейте эти задачи на подзадачи. Сначала сделайте анимацию покоя. Эту подзадачу разбейте ещё на подзадачи - спрайты анимации рыцаря находятся на расстоянии друг от друга:
Это неудобно для использования в SDL3. Я нарезал спрайты в GIMP и расположил их друг за другом. В GIMP можно отобразить сетку заданного размера, в данном случае, это сетка с ячейками 96x96 пикселей. Можно переносить нарезанные спрайты мышкой в GIMP и выравнивать их ориентируясь на заданную сетку: В результате получается sprite sheet, который удобно использовать в SDL3: Экспортировать из GIMP надо в формат PNG, чтобы был альфа канал (канал прозрачности). GIMP - это бесплатный редактор изображений похожий на Photoshop. Есть ещё Krita и какие-то другие. GIMP занимает 1 GB. Вы можете нажать правой кнопкой мыши по spritesheet выше и сделать спрайтовую анимацию покоя - это ближайший шаг, что делать дальше. Если возникнут проблемы, то создавайте новые темы. Если проблема связана с C++, то создавайте тему в C++ разделе. Если проблема связана с какими-то игровыми механикам или с SDL3, то создавайте тему в разделе Программирование игр. Если хотите, чтобы вашу игру запускали и тестировали, то создавайте тему в разделе Бета-тестирование. Можете описывать процесс разработки игры в своём блоге - здесь на форуме можно создать блог. Ещё более удобно закинуть нарезанные спрайты в Texture Packer и экспортировать в два файла PNG и JSON. В PNG будет атлас спрайтов, а в JSON информация: имена спрайтов, x, y, width, height. Я использую библиотеку simdjson для парсинга JSON. Я время от времени практикуюсь с Python. На нём можно быстро сделать прототип примера на OpenGL. Его легко перевести на C++, особенно, если использовать PyOpenGL, PyGLM, PyBox2D, pugixml На нём проще практиковаться с OpenGL, делая простые учебные примеры для кого-то или для себя. На КиберФоруме можно много найти задачек для практики или самому придумывать на основе других задач или комбинируя их. Python удобен, как расширенный калькулятор. Удобен для автоматизации процессов моделирования и анимирования в Blender. Я делаю перемещение от первого лица с использованием библиотеки для 3D физики Bullet Physics: демка в браузере. 3D-графику рисую на шейдерном OpenGL. Для создания окна и обработки событий мыши и клавиатуры использую SDL3. Собираю в WebAssembly (WASM) с помощью Emscripten и MinGW GCC 11.2. MinGW взял из Qt. Для сборки в EXE использую MinGW, потому что мне проще собирать из консоли и кодить в легковесном редакторе Sublime Text 4. В Bullet Physics есть механизм для помощи в рисовании коллайдеров. Он автоматически вызывает метод куда передаёт начала и концы отрезков и цвет отрезков. Между координатами отрезков можно нарисовать отрезки: Это необходимо, чтобы видеть коллайдеры во время разработки приложений, иначе, будет невозможно их увидеть. Отображение коллайдеров легко отключается. Это общая практика практически для всех физических движков. Я читал, что такой механизм есть в физическом движке PhysX. Этот механизм есть в Box2D, OimoPhysics и т.д. Управляю коллайдером-сферой с вращением только вокруг вертикальной оси. Двигаю сферу на W и S, а вращаю вокруг Y с помощью мышки. Камере присваиваю позицию (со смещением по Y) и угол сферы. Объекты загружаю из файлов формата .dae (Collada) - этот формат легко парсить с помощью pugixml, потому что это XML: демка в браузере с загруженными 3D-моделями
0
|
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 110
|
|
13.03.2025, 17:44 [ТС] | |
В сравнении Python + PyGame с С++ SDL3 довольно сложно для новичка как я.
У меня не стоит задача - писать игры. Задача понять хотя бы 60% C++ на основе игры. Для меня интересно видеть результат визуально на данном этапе изучения. На данный момент есть желание что то написать мелкое 3D без сторонних библиотек 3D. Что бы понимать процесс написания на более низком уровне. Но в данный момент мало времени + затормозило отображение текстуры. Если будет возможность, взгляните на код новичка (файл.zip). c C++ намного сложнее - прорвемся. cosmoProject.zip И еще вопрос?! Использование BOX2d с С++ проще для понимания чем SDL3 + C ?
0
|
13.03.2025, 19:48 | |
Да, как правило, на Python проще и быстрее писать. На нём проще изучать основы OpenGL. Легко устанавливать необходимые библиотеки. Но есть субъективные минусы. Например, на C++ гораздо проще создать EXE, APK и WASM. Создание исполняемый файлов из программ на Python - это против природы Python. Он должен исполняться из исходников, без сборки исполняемых файлов. Субъективный минус Python, на мой взгляд, в том, что на нём автор Bullet Physics извратил его до неузнаваемости, создав PyBullet.
Я к программированию игр отношусь как к тренажёру, как к хобби. Это и увлекательно и это практика. Есть свобода, что можно изучать. Можно подключить базу данных SQLite к игрушке, чтобы сохранять таблицу рекордов. Можно сделать сетевую игрушку по интернету - крестики-нолики, шашки, морской бой и т.д. Это тренировка клиент серверного-взаимодействия. Можно изучать линейную алгебру на шейдерном OpenGL. Когда вы потихоньку развиваете игрушку, то за одно практикуетесь в C++. Можно алгоритмы какие-нибудь практиковать, например, поиск пути A* и Flood fill - это алгоритм можно использовать для открытия пустых ячеек в Сапёре и игре Го. В 2D вам надо не упустить возможность дальше двигаться с демкой, которую вы начали. Вы вывели рыцаря, а теперь ему нужно добавить анимацию покоя - это 6 кадров. У вас уже есть пример бегущего человечка. Возьмите этот пример и сделайте вывод кадров рыцаря. Box2D в самом начале требует понимания, что нужно создать объект типа World - это физический 2D-мир. Этому миру можно задать гравитацию, но в примере с рыцарем гравитация должна быть нулевой. Нужно создать динамический объект для рыцаря. Нужно сделать, чтобы этот объект можно было перемещать клавишами, задавая скорость или действуя силами. При отрисовке рыцаря нужно считывать координаты динамического объекта и рисовать его по этим координатам. Box2D автоматически вызовет обработчик столкновения, где можно будет узнать, какие объекты столкнулись - если это стена, дерево или забор, то ничего не делать, а если это враг, то убрать часть жизней, если монеты, то увеличить их число и т.д. Вы можете посмотреть код на Python из сообщения #102 и спросить, какая строчка кода непонятна. Код Box2D на Python и C++ абсолютно одинаковый. Не запускается. Пишет, что файл не может найти. Надо было использовать относительные пути, а не абсолютные. Вы лучше знаете, где что поправить. Надо заменить на пути вида: "./images/bg1.png" Это слишком сложно для вас на данном этапе. Вам нужно заставить рыцаря двигаться с помощью клавиш W, A, S, D или стрелок. Сделайте, чтобы когда рыцарь не двигается, то проигрывается анимация покоя, а когда вы нажимаете клавиши для перемещения, нужно чтобы проигрывалась анимация движения. Когда вы отпустили клавиши, то нужно чтобы опять проигрывалась анимация перемещения. Не забрасывайте сейчас эту задачу. Она простая, но как раз вам нужно набивать руки на очень простых вещах.
0
|
14.03.2025, 22:05 | ||||||||||||||||||||||||||
У меня мало опыта с SDL3, поэтому я переписал прошлый пример с нуля без копипаста. Я думаю, что если чаще и регулярнее так переписывать, то всё лучше будут запоминаться функции и будет проще с каждым разом.
Я заменил бегущего человечка на анимацию покоя рыцаря. У человечка размер кадра 128x128, а кадров 4 штуки:
Собрал в WASM, для запуска в браузере в один клик: https://blue-warrior-sprite-an... tlify.app/ Собрал в APK из WASM с помощью Cordova. Собрал в EXE c помощью MinGW 11.2 из консоли. Прикрепил проект с батниками для сборки. Следующим шагом может быть - написать обработчики нажатий клавиш W, A, S, D и/или клавиш стрелок. Для начала, чтобы в консоль выводилось направление, то есть текст: up, left, down, right. Это шаг к движению персонажа по нажатию клавиш. В будущем можно было бы добавить врагов, которые бы искали путь с помощью алгоритма A*. Есть пример на WebGL: Алгоритм поиска пути A*. В общем, есть от чего отталкиваться. Можно писать разные демки на C++, опираясь не предыдущий опыт и тем самым практиковаться в программировании. Предыдущий опыт - это отображение текстуры, спрайтовая анимация покоя, а следующий опыт - это нажатие клавиш, движение персонажа, переключение на анимацию ходьбы, добавление преград, запрет персонажу проходить сквозь преграды, добавление монеток, сбор монеток и отображение их. Это всё пишется кодом на C++, а значит идёт практика. Например, вы поймёте, как преобразовать число в строку, чтобы отобразить в виде текста на экране. main.cpp
0
|
15.03.2025, 10:26 | ||||||||||||||||
Очень важный шаг, который необходимо сделать и он очень простой - это подключение Box2D. Я прикрепил собранную библиотеку для MSVC и MinGW GCC 11.2. Можно подключить через CMake - в папке lib есть папка cmake, либо в VS подключить через настройке в проекте типа vcxproj. Не факт, что всегда можно подключать библиотеку собранную на другом компиляторе, особенно, MinGW, но у МSVC значительно больше шансов. В архиве box2d-2.4.1-prefix.zip кроме MinGW-сборки для Desktop есть сборка для Web, а в примере есть батники для конфигурирования и сборки для Desktop и Web. Если не прокатит подключение собранной библиотеки, то можно собрать Box2D из исходников с помощью CMake-GUI - тоже очень полезный опыт, так как на C++ очень часто бывает, что нет pre-built библиотеки и нужно самому собирать из исходников с GitHub с помощью CMake.
Прикрепил пример на SDL3 в котором подключена Box2D. Пример подключает Box2D и SDL3 в CMakeLists.txt:
main.cpp
0
|
15.03.2025, 11:55 | ||||||
Ещё они очень важный шаг - это рисование коллайдеров. Box2D предоставляет класс b2Draw, от которого можно наследоваться и переопределить два метода - одни для рисования прямоугольников, а другой для рисования окружностей:
Небольшой пример рисования коллайдеров на SDL3: Демка в браузере, собранная в WASM
0
|
16.03.2025, 03:28 | |
Вот как я поступил, приставив себя на вашем месте. Я выкладывал маленький пример на Python и Pygame для определения контакта игрока с объектами средствами Box2D в сообщении #102. За вас Box2D делает проверку и делает это оптимизированно, то есть если даже у вас будет очень большая карта, то он быстро найдёт объект, с которым произошёл контакт. Тем более, что Box2D используется многими игровыми движками, например, в Unity и была протестирована множество раз. Box2D значительно упрощает решение и экономит время. Так как если этот пример писать без Box2D, то ушло бы гораздо больше сил и времени. На C++ код выглядит почти один в один, как на Python, но со спецификой C++. В процессе переписывания волей не волей изучаешь C++ на практике. Переписал пример из Python/Pygame/PyBox2D на C++/SDL3/Box2D: демка в браузере WASM Управление - WASD либо клавиши стрелки.
0
|
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 110
|
|
16.03.2025, 16:59 [ТС] | |
Спасибо за помощь и ваш труд. Обязательно дойду и попробую все.
В данный момент нет времени. По этому и нет вопросов. С понедельника начнем. В файле ниже пример геометрии, движения и отражения. о без библиотек. Если плохо видно, уменьшите размер символов до 8. test.zip
0
|
16.03.2025, 22:41 | |
В прикреплённых вами файлах находится реализация маленького физического движка. Эти файлы в совокупности надо называть библиотекой физики, как и Box2D. Разницы нет в том, как вы подключаете библиотеку - в виде исходных файлов (только .h или .h + .cpp) или в виде .lib или .a или .dll. Вы можете так же скачать исходники Box2D, закинуть их в себе в проект и подключить к проекту, как и эту библиотеку. Вы прикрепили header-only библиотеку - такому же точно классу библиотек принадлежит, например, библиотека GLM. Есть свои плюсы и минусы в написании своей библиотеки с нуля (или развитии чье-то маленькой не совсем с нуля) и в использовании общей библиотеки. Плюсы и минусы зависят от обстоятельств.
Просто прикреплённая вами библиотека более понятна для вас. Как вариант, можете сделать с помощью предоставленной вами библиотеки такой пример, где можно двигать персонаж (пусть будет тоже круг) и выведите несколько прямоугольников с разными цветами, чтобы в консоль выводилось с каким прямоугольником произошёл контакт. Например, выводите прямоугольники разных цветов - красный, зелёный и синий. Управляйте кругом клавишами. Если круг коснулся красного прямоугольника, то выводите в консоль - red, если зелёного, то green, если синего, то blue. Практикуйтесь на небольших примерах и комбинируйте эти примеры. После того, как сделаете пример с выводом цвета прямоугольника при касании, нужно сделать пример, чтобы круг не проходил сквозь прямоугольник, то есть, чтобы главный персонаж игры не проходил сквозь препятствия. На Box2D можно двигаться вдоль стены с заданным коэффициентом трения, то есть скользить с заданным трением, как на гиф-анимации ниже. Не знаю, реализовано ли это на той кастомной физической библиотеке. Я сделал комбинацию примера со спрайтовой анимацией из сообщения #109 и примера с движением коллайдера-окружности с определением контакта из сообщения #112. Здесь добавил анимацию ходьбы. Сделал два круговых коллайдера для главного героя. Демка в браузере, собранная в WebAssembly
0
|
20.03.2025, 18:53 | |||||||||||
Скорее всего, вам было бы интересно и полезно писать короткие игровые демки очень простых мини-игр. Например, я переписал код демки Змейка из текстового туториала NoobTuts Snake Game на PySDL3. В этом туториале очень простой английский. Можно за одно поупражняться в английском. Попробуйте переписать мой код с Python на C++, читая тот туториал. Для этой игровой демки нужно уметь рисовать квадраты заданного цвета с помощью SDL3. В целом PySDL очень близко повторяет оригинальный SDL3 на C/C++. Вместо списка Python используйте std::vector из стандартной библиотеки C++.
main.py
0
|
20.03.2025, 19:13 | ||||||
Движок форума добавляет пустые пробелы в пустых строках, поэтому прикрепил исходники.
https://rextester.com/MBDA81854
0
|
30.03.2025, 13:41 | |
cosmos44, я стараюсь каждый день уделять хотя бы 30 минут в день для практики с SDL3 и OpenGL с самыми базовыми упражнениями. Пока выкладываю на Python, а на C++ не выкладываю. Вам может быть будет интересно и полезно переписывать мои примеры с Python на С++. Я сделал две отдельные темы на официальном репозитории PySDL3, где в первой используется 2D API, а во второй используется чистый шейдерный OpenGL 2.1:
На данный момент сделано 19 маленьких примеров на PySDL3 и 7 базовых примеров на OpenGL. Я считаю, что вам лучше переключиться с 2D API на чистый шейдерный OpenGL, потому что 2D API крайне ущербный - в нём много чего не хватает, либо это сделано неэффективно. Как, например, вывод текста или скрыто и непонятно, как сделано. Нет детектирования клика по объекту, а на OpenGL это делается легко методом цветового ID. Либо делается сложно и неэффективно, например, чтобы повернуть прямоугольник на 2D API вам нужно сначала нарисовать его на текстуре, а потом повернуть созданную текстуру и нарисовать текстуру, а на OpenGL и PyGLM это делается гораздо понятнее и более эффективно. PyGLM - библиотека для работы с линейной алгеброй. OpenGL намного более прозрачный с точки зрения понимания математики и процессов компьютерной графики. На OpenGL вы можете строить графики функций и геометрические фигуры не только в 2D, но и в 3D. Вам несложно будет в дальнейшем переписывать примеры с Python, PySDL3, PyOpenGL, PyGLM и т.д. на C++, SDL3, OpenGL, GLM и т.д.
0
|
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 110
|
|
Вчера, 17:22 [ТС] | |
Поясните пожалуйста мне логику анимации "на пальцах" (без переменных).
1) У нас есть int currentTime = SDL_GetTicks(); 2) Есть массив из 6-ти фреймов (считаю длинным кодом, но все же давайте на данном примере). 3).... 4).... За ранее спасибо.
0
|
Вчера, 18:36 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
С огромным удовольствием! Скопирую код под спойлер, чтобы удобнее было подглядывать в него:
Код
Пример маленький, потому я постараюсь объяснить с самого начала, потому что повторение - мать учения. В SDL3 появилась новая очень удобная концепция - отказ от функции main() в пользу четырёх функций:
Теперь по поводу работы спрайтовой анимации. 1) Создание текстуры из файла. Первым делом в теле функции SDL_AppInit загружаем файл idle.png с кадрами спрайтовой анимации:
2) Концепция спрайтовой анимации. Суть спрайтовой анимации в том, что отображается кадр на прямоугольнике в течении определённого времени. Далее, на прямоугольник выводится следующий кадр и он тоже отображается в течении указанного времени. Когда кадры заканчиваются, то происходит переключение на самый первый кадр. Этот указанный промежуток времени хранится в переменной animationInterval и равен в данном примере 0.1, то есть 100 миллисекунд. 3) Концепция дельта тайм. Дельта тайм - это промежуток времени между кадрами, но кадрами не спрайтовой анимации, а кадрами перерисовки всей сцены. Это время между вызовами функции SDL_AppIterate. Например, если FPS - 60 кадров в секунду (frame per seconds), то дельта тайм будет равен 0.016 секунды или 16 миллисекунд, потому что 1000 / 60 = 16.66666 (6). Концепция дельта тайм центральная для всех видов анимаций, будь то спрайтовая анимация, key frame анимация перемещения/поворота/масштабирования, скелетная анимация, анимация на физическом движке и т.д. В данном примере, дельта тайм используется для отсчёта промежутков времени, когда нужно переключаться на следующий кадр спрайта 4) Реализация расчёта delta time. Для расчёта delta time используется следующий код:
6) Индекс следующего кадра спрайтовой анимации. При этом мы рассчитываем новый индекс следующего кадра спрайтовой анимации с помощью строки:
7) Рисование кадра спрайтовой анимации. Рисуем кадр спрайтовой анимации:
0
|
Вчера, 18:36 | ||||||
Помогаю со студенческими работами здесь
120
Неправильная отрисовка текстур в OpenGL
Не отрисовывается график Генератор текстур( с чего начать) Qt с++ картинка постоянно отрисовывается Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
|
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
|
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
|
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
|
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
|
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
|
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
|
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
|
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
|
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели.
Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
|