Как получить в Event OpenGl?

Версия Minecraft
1.20.2
API
Forge
Привет, я хоу сделать, что бы кровь вылетала из игрока, когда по нему проходит урон, как мне получить OpenGl в onLivingHurt ?
 
Решение
заспавни частицу как Entity, а к ней привяжи свой рендер. Вот там и рендери что надо (если ещё в этом будет необходимость).
Рендер не может жить в 1 микросекунде, человеческий глаз не способен такое уловить. А значит рендерить надо какое то продолжительное время.
Напиши мне в телеграм, ник тот же. Не люблю на столько тупые вопросы, ты просто не понимаешь как устроен рендер.
1,038
57
229
заспавни частицу как Entity, а к ней привяжи свой рендер. Вот там и рендери что надо (если ещё в этом будет необходимость).
Рендер не может жить в 1 микросекунде, человеческий глаз не способен такое уловить. А значит рендерить надо какое то продолжительное время.
Напиши мне в телеграм, ник тот же. Не люблю на столько тупые вопросы, ты просто не понимаешь как устроен рендер.
 
1,371
112
241
заспавни частицу как Entity, а к ней привяжи свой рендер. Вот там и рендери что надо (если ещё в этом будет необходимость).
Такое себе решение.
Entity надо просчитывать, даже если он не двигается. В особенности это касается рендера этого самого entity.
Если частиц будет слишком много (скажем, замес среди 10-15 игроков), майн будет просто лагать. Насчёт TPS не уверен, но FPS точно упадёт (вспоминаем рамки и картины).
Рендер не может жить в 1 микросекунде, человеческий глаз не способен такое уловить. А значит рендерить надо какое то продолжительное время.
А теперь вспоминаем частицу (Particle) капель воды/лавы. Или же новые частицы спор. Да и дым от костра тоже...
В общем, отказавшись от Entity, можно найти достаточно вариантов реализации эффекта крови. В том числе и чисто GL'вское решение (через условный Tesselator, хотя мне тоже не оч. нравится подобное решение), и партиклы.

Не люблю на столько тупые вопросы, ты просто не понимаешь как устроен рендер.
Здесь полностью соглашусь.
 
1,038
57
229
Как ты думаешь, как это реализовано? Это не секретная технология, в которой в том числе присутствует ECS (за счёт которого в полной мере она и раскрывается).
5:16
Количество Entity не имеет значение в принципе. Все партиклы что ты видишь это те же Entity между прочим, только рисуются по другому. Любые частицы по типу ниагара или любые другие. Ограничение конечно есть, но даже слабая видео карта как GTX 750, способна совершенно спокойно отрисовать 19 миллионов полигонов, вот моё видео
Дело не в том что ты рисуешь, а в том как. Может Entity и сдуются после 1000 выстрелов в секунду (что мало вероятно, ведь Minecraft сам по себе не даёт бить часто), но это точно самый ближайший и простой путь из возможных.
 
1,371
112
241
Любые частицы по типу ниагара или любые другие. Ограничение конечно есть, но даже слабая видео карта как GTX 750, способна совершенно спокойно отрисовать 19 миллионов полигонов
Я и не спорил по поводу "возможно ли отрисовать". Даже так, на видео видны просадки, что не есть хорошо. Да, "я рендерю всю сцену, а не часть, как то принято обычно в играх", и тем не менее, рендерить 2D спрайт, а не 3D объект проще, не находишь?
Все партиклы что ты видишь это те же Entity между прочим, только рисуются по другому.
... Ты вообще в курсе, чем отличается Entity от Particle?
Начнём с того, что все расчёты движения Particle выполняются на клиенте. Расчёты движения Entity же расположены на сервере (в мире).
Далее, Particle - объект, сильно проще какого-нибудь Entity, потому и требуют они меньше ресурсов.
Хорошо, допустим я всё ещё не убедил тебя, то почему тогда сами разрабы игры используют Particle, а не всё те же Entity? Зачем городить костыль, когда уже есть вполне себе рабочее решение-полуфабрикат?
Это не секретная технология, в которой в том числе присутствует ECS
Вот этот тейк не совсем понял. ECS же призван упростить процесс разработки, не? То, что логика отделена от данных, всё ещё не значит, что этой логики нет. И её всё ещё придётся просчитывать.
но это точно самый ближайший и простой путь из возможных.
Particle, кстати, реализуются сильно проще любого Entity. Так, на будущее.
Ну и напоследок:
Дело не в том что ты рисуешь, а в том как.
Выстрел себе же в ногу. Particle требуют, по сути, только текстурку. EntityRenderer требует ещё и EntityModel, Entity и текстурку. Что из этого легче отрендерить: воксели (пускай даже супер тонкий слой) или спрайт?
-----------------------
Крч. Тему можно обсасывать долго, если очень хочется поболтать - создавай тему в оффтопе, с удовольствием приму участие в дискуссии как будет время.
Автору темы всё же советую использовать уже готовые средства реализации схожих эффектов - партиклы (Particle).
 
1,038
57
229
рендерить 2D спрайт, а не 3D
да нет ни 2д ни 3д. Если уж по существу. Шейдер всё делает в 2д, рассчитывает искажения камеры за счёт FOV и прочее.
любой спрайт - это полигон, есть тут один нюанс, но я не буду углубляться, так проще воспринимать.

В остальном ты прав, кроме опять же рендера. Для рендера Entity модель не нужна, тесселатор никуда не делся. В 1.20 я ещё не лазил, но не думаю что его бы убрали в новой версии. (у меня скриншот висит в теме 3д модели, там нет никакой модели, просто полигон нарисован поверх куба)

все расчёты движения Particle выполняются на клиенте. Расчёты движения Entity же расположены на сервере
но если только ты будешь видеть ошмётки от попадания в голову, то ты не увидишь ошмётки от игрока который выстрелил в того же чела. Проще говоря тебе будет казаться что все кроме тебя промахиваются по друг другу.
 
1,371
112
241
любой спрайт - это полигон, есть тут один нюанс, но я не буду углубляться, так проще воспринимать.
Счёл его несущественным, потому не упомянул.

(у меня скриншот висит в теме 3д модели, там нет никакой модели, просто полигон нарисован поверх куба)
Это несколько другой случай. То, что ты делаешь - напрямую рисуешь в буффер (был где-то тутор на эту тему), мы же хотим использовать встроенные средства майна (типа того же EntityRenderer или встроенные приколы в Particle).

Для рендера Entity модель не нужна, тесселатор никуда не делся.
К сожалению, начиная с версии 1.14, вроде бы, класс модели обязателен. По крайней мере, хотя бы для наследования от EntityRenderer точно (пример для 1.16, но на 1.20 всё также, просто сейчас нет готового кода, который бы работал).
В частности, именно в классе модели теперь происходят анимации. И да, у меня просто моб-куб, не более. И тем не менее, для него понадобилась отдельная модель.
Да, там можно воспользоваться рендером от тесселатора, но опять-таки: зачем придумывать велосипед?
 
Сверху