|
2 / 2 / 0
Регистрация: 27.06.2019
Сообщений: 1
|
||||||
Приложение, симулирующее дождевые капли27.06.2019, 12:33. Показов 6335. Ответов 30
Метки многопоточность (Все метки)
Дело такое: я хочу написать программу, которая бы симулировала дождь. Равномерно по экрану я генерирую капли, которые затем должны падать вниз, но они не рисуются + они не падают. Я абсолютно без понятия, почему компьютер не рисует капли.
2
|
||||||
| 27.06.2019, 12:33 | |
|
Ответы с готовыми решениями:
30
Заряд капли Капли дождя Форма капли |
|
|
||||||
| 27.06.2019, 13:37 | ||||||
|
В общем-то, ваша программа у меня даже не запускается, но идея мне понравилась, поэтому я решил её реализовать. Ну и собсна, я это сделал. Правда, сам я ещё не очень прошаренный, поэтому по какой-то причине эта хрень жрёт катастрофически много ресурсов, но тем не менее, работает
если кто-нибудь из знающих людей читает, то объясните, пожалуйста, почему компуктер начинает греться как чёрт во время выполнения программы? Я понимаю, что 100 потоков эт, наверное, много, но они почти ничего ж не делают
1
|
||||||
|
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
|
||||||
| 27.06.2019, 16:54 | ||||||
Сообщение было отмечено Aviz__ как решение
Решение
Для эффекта косого дождя извините нет справочника под рукой, для эффектов капли по стеклу вам нужно сделать программную анимацию которая по рандомному времени будет запускать раскадровки этих самых стекающих капель. Дадите анимацию движения капли по стеклу, покажу как сделать, сам искать, рисовать ее не буду.
а так если дождик по проще то как то так ![]()
3 потока это оптимально для проекта, выше если то по непонятным причинам все просто висеть будет хоть и загрузка ЦП будет на уровне 30%, как узнать загруженность потока, а она получается есть, информацию я не нашел. Много потоков плохо, пихать все в один поток тоже плохо, хотя раньше с таймерами баловался так вроде 100 таймеров прекрасно звезды двигали (под каждую звездочку свой таймер) но не помню эту поделку уже.
0
|
||||||
|
|
||||||||||||
| 02.10.2019, 20:55 | ||||||||||||
|
Есть идея использовать несколько другой подход. То есть использовать CachedThreadPool Небольшой простой пример, как это работает:
То есть мы создаем некоторые задачи
Добавлено через 16 минут PS. Поставил плюс ТС за интересный вопрос и идею.
0
|
||||||||||||
|
|
|
| 02.10.2019, 21:06 | |
|
vvm28, да я когда писал эту программу ничего не знал про многопоточность. Просто один раз увидел, что тип надо запихнуть метод в Thread и запустить, ну и решил это применить. Сейчас я бы такого бреда не написал
0
|
|
|
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
|
||
| 03.10.2019, 08:10 | ||
|
vvm28, Следуя вашей логике на создание игры уровня марио надо защитить 3 докторские, а для ее воспроизведения не хватит компьютера пентагона (хотя открою вам секрет марио это 500 строчек кода 1 таймер или 1 поток).
Виртуальная джава машина и мощь под капотом вашего PC это 2 разных организма. Оптимально приемлемо юзать не более 5-10 потоков. CachedThreadPool - вы серьезно в это верите ? Уже не один блогер по филосовствованию джава признал что многопоточность нельзя уверенно контролировать с помощью волшебной кнопки или команды, нужно самому строить свою логику которая хрупка ака хрустальный шар. Ваши дожди легко гоняет один поток, не пишите бред с многопоточностью для такой примитивной задачи, тыся капель это тыся капель и в вашем случае это все равно тыся потоков. Если совсем туго то данная задача прекрасно реализуеться таймерами и в отличии потоков которые живут сами по себе вы сможете хотя бы контролировать загрузку вашего ЦП. Начните с динамической графикой на практике работать что бы понять все тонкости а писать чушь большого ума не надо. Микроскоп вам дан не для того чтобы гвозди заколачивать. математические визуальные эффекты: Звезды, дождики, ветер гоняющий листья, рябь на воде, снег и прочее обсосали-обглодали до самых белых костей еще 2000-2003 годах. Если вы проснулись только сейчас и с воодушевлением ринулись дать миру новый лисапед, то вы опоздали на полтора десятка лет.
0
|
||
|
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
|
||
| 03.10.2019, 08:42 | ||
|
И как ваше приложение по 3D демонстрации поживает или вы сдались ?
0
|
||
|
|
||
| 03.10.2019, 09:12 | ||
|
0
|
||
| 06.10.2019, 16:17 | |
|
Makinwa, для графики лучше всего брать LWJGL3, JOGL и т.д. То что использует шейдеры. Шейдеры - это программы для отрисовки графики на стороне графической карты. В этом случае вы загрузите на отрисовку GPU, а не CPU. Если задействовать CPU для графики, то он будет сильно загружен, а GPU (Graphics Processor Unit) предназначен для графики. В случае небольшого разрешения картинки каждый фрагмент (грубо говоря, каждый пиксель) будет обрабатываться на GPU параллельно, потому что современные видео карты могут запускать шейдеры в параллельно в тысячах потоках.
Я написал программу на Java и LWJGL3 (OpenGL 3.1), которая рисует круг с помощью ломанных. Всё подключено. Вам нужно только скачать архив и запустить в Eclipse: Circle_GlfwLwjgl3OpenGL31Java.zip Данные загружаются один раз в VBO (оперативную память графической карты), а далее GPU берёт эти данные из этой RAM и отрисовывает с помощью шейдеров. В интернете и на Youtube огромное количество уроков уроков для начинающих в шейдерном OpenGL на Java. Вбейте на Youtube: lwjgl3 for beginners. Лучше сразу искать на английском, потому что всегда более качественные уроки и без английского никуда, документация на нём.
0
|
|
|
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
|
|
| 06.10.2019, 17:30 | |
|
8Observer8, OpenGL скоро станет историей, ваш труд можно объяснить поговоркой как воду в ступе толочь.
Ну а по поводу круга с помощью ломаных, где то у меня есть этот кусок кода который сие рисует на основе одной математики и ЦУ это нисколько не напрягала. Круг можно нарисовать очень легко и векторами от центра если вы знаете что такое полярная математика. Сейчас игры в 95% случаев пишут с помощью конструкторов и готовых движков, отсюда и загрузка ЦП где 30% ваша игра остальное библиотеки вашего конструктора, кодят на чистом языке уже единицы а коллизию математикой может уже объяснить лишь один из 10к программистов.
0
|
|
| 06.10.2019, 20:10 | ||||||
|
Никто не должен запрещать другим людям писать свои движки, заточенные под их игры, под их стиль. Мне, например, очень нравится в свободное время изучать, как писать свой движок и я пишу свой маленький игровой движок на шейдерном OpenGL. Мне это помогает не забывать, изучать и развиваться дальше в линейную алгебру, геометрию, немного математического анализа для простой физики (интегрирование, дифференцирование и т.д.), игровые паттерны по GoF, алгоритмы специфичные для графики и игр, мультиплеер, базы данных для игр и т.д. Но при этом я изучаю некоторые популярные игровые и графические движки, фреймворки и библиотеки.
0
|
||||||
|
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
|
|
| 06.10.2019, 21:52 | |
|
я не буду с вами спорить, мы с вами на разных берегах. Писать дождик на OpenGL это как забивать гвозди микроскопом.
Изучать как устроены игры я начал еще со школы, да верно игровые движки создавали всегда, этот продукт мог обеспечить успех компании, первые игры делали на псевдо символах 8х8 и существовала только 2 флагманских языка которые были основными это бейсик и ассемблер. Марио самый первый создан на изменно модифицированном бейсике который был перелопачен для удобство вывода данной графики под данную игру. И с той поры пошла гонка движков которые были хорошим коммерческим продуктом. И эта гонка загнала в уже тупиковую нишу развития программирования. Последний алгоритм вывода графики был разработан более 10 лет назад. И все, те кто мог разрабатывать уже старики а новое поколение знает только готовые движки и их модификации. 3й дум был в демо версии представлен в 2003 году и у меня и сейчас демка в архивах эта есть, прошло 16 лет а скачка соразмерности длинны прыжка между квейком 3 до 3 дума нет. Сейчас разработчики просто стали режиссерами и оперируют контрастностью с блюром переключая планы обзора. Рынок давно вытер ноги о развитии индустрии. Мне было интересно взглянуть на то что может ваш "маленький движек, просто чтобы за чашкой чая задуматься и спросить в пустоту а зачем ? Вы знаете игровые движки для 2D игр RPG Maker вы знаете что кодом такие игры занимают всего 3к кода, и вопрос а зачем тогда вообще эта суета если эти 3к кода можно написать с нуля за 1-2 недели ( и я знаю о чем говорю, у меня есть код конструктор на котором можно собрать любую 2д аркаду). Добавлено через 11 минут Tomb Raider 1 для работы не нужна была даже виндовс и гра летала на P133 а если вы сейчас нечто аналогичное соберете на Unity3d то для комфортной игры вам потребоваться компьютер не ниже Pentium Duo который превосходит P133 в не одну сотню раз. первая плойка имела на борту 33 мГЦ частоты без ваших OpenJL но если вы создадите эти игры но новых движках то вам надо будет комп не ниже i3. Ваш путь ведет в никуда, но я понимаю что рынок заставил так идти. Добавлено через 4 минуты я до сих пор мило офигиваю как игры в аналоги которых я играл 20 лет назад на дровах сейчас в новой интерпретации лагают на планшете с 4 ядрами 4 гигами оперативки и прочими бла бла бла
0
|
|
| 06.10.2019, 23:42 | ||||||
|
Игра в 3D: клик. Змейка: клик. Понг: клик Голова обезьяны (мышкой: поворот и zoom): клик
0
|
||||||
|
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
|
||
| 07.10.2019, 00:20 | ||
|
8Observer8, В архиве немного видео, предпочитаю только математику, все что в ролике создано исключительно математикой и хитростью ума.
![]() Мы на разных островах... Помню игру StarFox Nintendo64, ваш пример вылитый финальный босс из этой игры
0
|
||
|
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
|
|
| 07.10.2019, 00:36 | |
|
Как то так
![]() Никогда не хотелось написать игру "змейка" всегда считал это скучной затеей
0
|
|
|
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
|
|
| 07.10.2019, 00:44 | |
|
Имитация вольфенштайн, берем картинку режем ее на полоски которые масштабируем создавая иллюзию перспективы в коридоре, 2д арка все просто лвл это огромный массив и один таймер который печатает объекты по карте массива в заданное время, о здесь много вкуснятины, свободный 2д мир с простым на уровне муравья ИИ у врагов, динамическим светом, режимом боевки РПГ, просто псевдо 3д, на деле это куча треугольников которые масштабируем и вращаем меняя уровень, теорема пифагора во всей красе. Так что вы там про математику на английском говорили ?)
0
|
|
| 07.10.2019, 15:59 | ||
Возможно появится что-то ещё в этом списке. Я выложил список на GitHub Pages здесь: Настоятельно рекомендую приобрести все эти книги на Amazon в электронном виде для читалки. Бывает часто такое, что в одной книге какой-то момент объясняется лучше, чем в другой, а другой момент объясняется в другой лучше, чем в этой. Но это только в том случае, если вы хотите связать свою жизнь с компьютерной графикой и линейной алгеброй. Если сомневаетесь, то лучше и не начинать, не трать время, тем более, что мне не нужны конкуренты Я сам хочу зарабатывать на создании интерактивных 3D приложений, а вы будете моих заказчиков переманивать - не надо так делать! Математика в компьютерной графике очень сложная (нет!), даже не пробуйте ![]() Добавлено через 18 минут Забыл добавить ссылку на GitHub Pages с книгами: https://8observer8.github.io/books/ Кстати, рекомендую этот ресурс (GitHub Pages). Создаёте репозитарий с вашим именем и .github.io на конце. Получаете себе статический веб сайт. Можно выкладывать свои примеры, ссылки на книги, и делиться ими с друзьями. Всё под рукой. Хранить архивы с примерами можно на DropBox по прямой ссылке. Получить прямую ссылку на файл в DropBox очень просто. Допустим, есть обычная расшаренная ссылка: https://www.dropbox.com/s/uhfx... n.png?dl=0 Редактируем её, делая прямой (то есть скачивание начнётся после клика по ней, её можно расположить на GitHub Pages) https://dl.dropboxusercontent.... gatron.png
1
|
||
|
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
|
|||||
| 07.10.2019, 16:28 | |||||
|
Вы даже не смотрели видео мои работ, если учесть что вы шагнули только на уровень создания игры "змейка" то до моего уровня вам еще лет 15 надо, я занимаюсь изучением и разработкой игр на 2д графики больше 15 лет с полной самоотдачей, начинал на ассемлере потом на бейсике потом на laser бейсике потом 10 лет на AS2 потом перешел на java.
![]() Очень надеюсь что всетаки я смогу увидеть "Марио" из под вашего пера ну скажем хотя бы лет через 5, немного грусно что это не так видя что ваш уровень топчется на игре "змейка" и жалкой примитивной стрелялки своять которую можно за 2 часа, причем 1,5 часа уйдет на рисование арта а еще я на машинке шить умею
0
|
|||||
|
|
|
| 07.10.2019, 16:28 | |
|
Nidl, знаете, вам бы самому легче стало, если бы не вели себя со всеми так высокомерно
0
|
|
| 07.10.2019, 16:28 | |
|
Помогаю со студенческими работами здесь
20
Потенциал капли Замерзание капли воды Найи объем капли Испарение капли воды в газе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|