Vbo в майнкрафт что это

Обновлено: 02.07.2024

\\Такое дерьмовое чувство когда все работает, но не в майнкрафте. Конеееечно зачем работать так как вездеее. Дааа, давайте все перепилим чтоб черт ногу сломил. АГА.
Сделал я чистый проект OGL&LWGJL ну чтоб лучше понимать его и наконец научиться им пользоваться.
Так вот, попробовал я значит простую штуку. Отрисовать на экране прямоугольник и закрасить его градиентом через фрагментный шейдер. Да у меня это получилось в ЧИСТОМ проекте, конечно не с первого раза(да и не без помощи гугла и ютуба(ну а как еще в наше время изучать что-то новое))
Решил я сделать то-же самое в майнкрафте, конечно не получилось.
Сделал вот что:
-В рендере худа добавил рендер картинки.
-Рендерил вот так:

shader.start() и shader.stop просто включение и выключение программы.
Краш такой:

Сделать можно все, если хочешь. Если не хочешь, не делай.

CumingSoon
Местный стендапер

Вангую, что ты заанбиндил буфер с индексами. Не надо так делать, он хранится непосредственно в ВАО.
Остальные же хранятся в ВБО, а ссылки на них в ВАО
Источник: Сайт OGL

RinKirin

Сделать можно все, если хочешь. Если не хочешь, не делай.

CumingSoon
Местный стендапер

Хм.
А ты где объект создаёшь? Это нужно делать в потоке рендера. Я делал в рендер-событиях с помощью ленивой инициализации.

RinKirin

Сделать можно все, если хочешь. Если не хочешь, не делай.

CumingSoon
Местный стендапер
RinKirin


Ну по типо токого.
PS. Код не мой целиком и полностью. Я пытаюсь его осмыслить. Да только частично выходит.

Сделать можно все, если хочешь. Если не хочешь, не делай.

RinKirin

Таак, я решил переделать(немного разобрался и написал сам в основном)

Вот так генерирую и заполняю обьекты.
Сам класс VAO просто хранит три переменные которые в конструкторе указаны.
Вот так рисую

И знаете что? Правильно. Ничего.
Ошибка на этой строке

Сделать можно все, если хочешь. Если не хочешь, не делай.

Oldestkon

Другая\non-debug версия LWJGL (и нужных проверок нет), возможно, драйвер фиксит за тебя косяки.

Ошибка, насколько я понимаю, в строке, где ты анбиндишь VBO с вершинами там, где этого делать не стоит:
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
Это нужно делать только _после_ того как ты заанбиндишь свой VAO, потому что тот сохраняет состояние GL_ARRAY_BUFFER.
Соответственно, при отрисовке OGL будет пытаться рисовать с отключенным GL_ARRAY_BUFFER, что ни к чему хорошему не приведет.

Стоит ли включать или отключать VBO в Minecraft (10.14.21)

Каждая видеоигра предлагает различные параметры и настройки, которые влияют на то, как игра выглядит, а также на то, как она на самом деле разыгрывается. Например, установка слишком высоких параметров текстуры позволяет игроку загружать текстуры высокого качества в свою игру. Точно так же снижение некоторых настроек дает игроку повышение производительности.

Включение или отключение VBO в Minecraft

При доступе к настройкам Minecraft вы могли заметить опцию под названием «VBOs». Это одна из многих опций, которые вы можете найти в настройках графики / видео в видеоиграх. Большинство игроков не имеют большого представления о том, что такое VBO, поэтому они спрашивают, следует ли им включать или отключать их.

Популярные уроки Minecraft

Сегодня, мы обсудим это подробно, чтобы помочь вам понять, следует ли вам оставить его включенным или выключить. Итак, давайте перейдем к делу!

Что такое настройка VBO?

Для тех из вас, кто не знает, VBO - это, по сути, настройка видео, которая обозначает вертикальный буферный объект. Это функция OpenGL, которая отвечает за то, какую процедуру или метод использует игра для загрузки данных вершин (включая позиционирование, вектор и цвет).

Это существенно влияет на вашу реальную производительность в игре. Он предлагает более разумный способ визуализации некоторых сцен в игре. Вот почему вы можете заметить, что в некоторых ситуациях игра работает лучше по сравнению с немедленным рендерингом.

Если бы мы еще больше упростили ситуацию, когда у вас отключена опция, весь мир в Minecraft будет загружается, даже если вы его не видите. С другой стороны, когда VBO включены, ненужные части мира, которые вы не можете загрузить.

Следует ли вам его включать?

Если вы поняли, что такое VBO, должно быть довольно ясно, что включение этого параметра для некоторых пользователей даст им огромный прирост FPS. Следует отметить одну важную вещь: когда она включена, вы перекладываете большую часть нагрузки на графический процессор, а не на центральный процессор.

Таким образом, от вашей системы также может зависеть, сможет ли она в полной мере воспользоваться включенной опцией. Для некоторых пользователей это может даже не повлиять на их производительность. Все, что вам нужно сделать, это попробовать включить и выключить эту опцию и сравнить, заметили ли вы разницу в производительности вашей игры. Если да, то вам непременно стоит оставить его включенным.

Итог

Вот все, что вам нужно знать о том, следует ли вам держать VBO включенными или выключенными. Убедитесь, что вы внимательно прочитали статью, чтобы полностью понять все о ней.


YouTube видео: Стоит ли включать или отключать VBO в Minecraft

YouTube видео: Майнкрафт: большие биомы против дефолта

Майнкрафт: большие биомы против дефолта (10.14.21)

Так же, как мобы относятся к любому объекту в Minecraft, биомы - это различные регионы, представленные в Minecraft. Эти биомы могут различаться в зависимости от внешнего вида, высоты, влажности, температуры и т. Д. Биомы несут ответственность за разделение созданного мира с различными средами. Например, леса, джунгли и пустыни.

Популярные уроки Minecraft

Улучшение биомов опыт игрока во время исследования его мира в Minecraft. Благодаря этим биомам игроки получают огромное разнообразие в своих исследованиях.

Большие биомы

Большие биомы - это один из типов миров, которые генерируют мир Overworlds в Minecraft в более крупном масштабе. Их расширение масштабируется примерно в 4 раза по сравнению с обычными биомами в Minecraft. Это означает, что игрокам нужно будет чаще вставать на ноги. Им также придется путешествовать намного больше по сравнению с обычными биомами.

Биомы по умолчанию

Обычные биомы, созданные в Верхнем мире, также называются биомы по умолчанию. Биомы занимают намного меньше места по сравнению с большими биомами. Как следует из названия, это в основном выбор по умолчанию, когда игроки создают мир.

Большие биомы против дефолта в Minecraft

В процессе создания мира многие игроки сравнивают большие биомы с дефолтными в Minecraft. Какой из них обеспечит лучший опыт во время игры? Этот вопрос крутится вокруг головы довольно многих игроков. Чтобы решить и выбрать, какой из них, в конечном итоге, является лучшим выбором, следует помнить о нескольких моментах:

Большие биомы имеют много больший размер. Благодаря этому шум становится более заметным. Это также делает ландшафт намного интереснее. Отверстие с радиусом 5 блоков в Minecraft станет радиусом 20 блоков. Они будут больше похожи на кратер.

В биомах по умолчанию игрок почти не видит разницы. Биом по умолчанию может показаться некоторым игрокам плоским. Хотя некоторые игроки все же предпочитают такой вид. Однако, по мнению нескольких игроков, это одна из причин, почему большие биомы являются лучшими.

Как уже упоминалось раньше большие биомы были в 4 раза больше, чем по умолчанию. Это означает, что большие биомы довольно обширны. Игрокам, которые с нетерпением ждут новых открытий, это может понравиться. Особенно тем, кто любит путешествовать в Майнкрафте.

Биомы по умолчанию занимают гораздо меньше места. Не проводя особых исследований, игроки могут фармить требуемые реймы.

Одним из основных недостатков выбора больших биомов является прохождение через биомы. Иногда игроку Minecraft может потребоваться несколько месяцев, чтобы попасть в желаемый биом. Это одна из основных причин, по которой игрокам не нравятся большие биомы. Механизм исследования стал намного более сложным по сравнению с используемым по умолчанию.

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


Что-то про VAO/VBO, шейдеры

Q: Что такое VBO?
A: VBO – это технология, позволяющая выгрузить данные в видеоустройство для повышения скорости отрисовки.
ОЗУ, ГПУ и ЦПУ - все имеют про три буквы в сокращении, все оканчиваются на «у» (на самом деле, ГП, ЦП и ОЗУ).
Данные между ними передаются относительно медленно, словно каждый из них находится на разных материках. Процессор имеет кэш, доступ к которому является достаточно быстрым; видеокарта имеет видеопамять, доступ к которой будет побыстрее, чем к ОЗУ. Данные, нужные для отрисовки, лежат же в ОЗУ: например, треугольник с 3 вершинами, каждая из которых может иметь 3 локальные координаты, 2 UV-координаты. Для того чтобы не гонять все эти данные из ОЗУ в процессор, а оттуда на ГП, была разработана технология VBO. Она позволяет сразу выгрузить данные в видеопамять, а графический процессор будет использовать их для отрисовки уже оттуда.

Также, VBO представляет из себя массив ака буфер данных, находящийся в видеопамяти.

Q: Что такое VAO?
А: Всё очень просто, это массив, содержащий буферы с данными(те самые VBO), а также последовательность индексов(о них позже).



Допустим, рисуется параллелограмм(выше картинка). Поскольку ОГЛ рисует треугольниками, то наш параллелограмм распадается на 2 треугольника. Каждая из 4 вершин может иметь: позицию(3 координаты), UV-координаты(2 координаты). Значит, VAO будет следующим(тут вершины повторяются, поскольку мы описываем треугольники, а каждому из них нужно указать три вершины в опр. порядке):
-VAO
--Pos0
--UV0

//второй треугольник
--Pos2
--UV2

Итого, 6 * (3 + 2) = 30 чисел.
Вместо того, чтобы загружать каждый раз данные о вершине, мы загрузим разово все вершины и последовательность, в которой эти вершины будут рисоваться(индексы). Тогда VAO примет вид:

--indices[0, 1, 2, 2, 3, 1]

Итого, 4 * (3 + 2) + 6 = 26 чисел. Экономия в 4 числа.
- Всего?!
Да, всего. Но мы ведь рисуем лишь два треугольника, а какова будет экономия, если нарисовать 2-3к треугольников?

Q: Хорошо, *не* понятно, но что такое шейдер, зачем он?
A: Шейдер - это программа для ГП, которая обрабатывает какие-то данные на ГП, лол. Вершинный шейдер - вершины, геометрический - наборы вершин, фрагментарный - пиксели. Ещё есть тесселяционный, но с ним я не работал, уж простите. Пишутся шредоры эти на С-подобном языке - GLSL.
Итак, расскажу чуть подробнее про каждый тип шейдеров.
==Вершинный==
Обычно принимает локальную координату вершины, которую с помощью диковинных трансформаций переводит в NDC(normalized device coordinates).

==Фрагментарный==
Ну тут всё просто - нужно выдать цвет пикселя. Можно использовать текстуру, откуда по UV-координатам легко достаётся цвет пикселя; можно просто указать цвет (от 0 до 1).

==Геометрический==
Принимаете набор вершин, а дальше что хотите - то и делайте. Можете раздвинуть вершины, можете добавить/убрать имеющиеся. Например, 1 входную вершину можно превратить в куб. Точка->куб. Тут уж ваша фантазия. 'Nuff said.

Q: Каких-то диковинных трансформаций?
А: Трансформации переводят позицию из одного простраства в другое с помощью матриц. Происходит это по следующей схеме: local space -> world(global) space -> view(camera) space -> clip space -> NDC space.

Кстати, в первых трёх трансформациях используется 3-хмерный вектор. А вот в последней трансформации требуется 4-хмерный вектор, поскольку после преобразования в clip space координаты должны стать единичными, т.е. находится в NDCS(normalized device coordinates space). А происходит это путём деления xyz на w. Намечается вопрос: "А как тогда подобрать w координаты, чтобы перевести этот вектор в clip space?". Обычно ставится w = 1, если это точка. И w = 0 если вектор(потому что при делении на 0 всё обращается в бесконечность, а вектор в данном контексте представляет направление. Направление же не имеет конечной точки, ведь так?). А ещё в clip space верно следующее уравнение -w <= x, y, z <= w. Если какая-то из 3-х координат не соответствует неравенству, то она находится вне проекции(вне frustum, если перспективная; вне параллелепипеда, если это ортогональная).

Читайте также: