#2 Minecraft с нуля на C++ - VAO и VBO

Поділитися
Вставка
  • Опубліковано 22 вер 2019
  • В этом видео я расскажу о Vertex Array Object и Vertex Buffer Object на примере отрисовки треугольника.
    ================================
    Ссылки
    alex2772.ru - мой сайт
  • Наука та технологія

КОМЕНТАРІ • 160

  • @Alex2772
    @Alex2772  4 роки тому +4

    Если возникнут какие-либо проблемы, пожалуйста, пишите сюда: alex2772.ru/forums/

    • @Alex2772
      @Alex2772  4 роки тому

      @Beginer Programming Я мог бы сразу игру на юнити сделать и не париться со своим движком. Этот спор можно продолжать до бесконечности.

    • @Alex2772
      @Alex2772  4 роки тому

      @Beginer Programming если вылетит исключение, то стандарт C++ гарантирует, что он вызовет деструкторы, а значит, и деинициализацию glfw.

    • @devvvnull
      @devvvnull 4 роки тому

      @Beginer Programming Да

  • @user-no7xn4qt5k
    @user-no7xn4qt5k Рік тому +3

    Боже, сколько нужно было посмотреть видеороликов по OpenGL, чтобы услышать внятное объяснение сути VAO и VBO. Спасибо тебе большое!

  • @illoprin
    @illoprin 4 роки тому +8

    Шалом. Тутор как всегда понятный и информативный! Лайк. Кста жду новую версию Craft Game

    • @Alex2772
      @Alex2772  4 роки тому +3

      Благо, их хоть кто-то понимает)

  • @4rtemtrickster468
    @4rtemtrickster468 4 роки тому +16

    Туторы реально годные! Смотрю тебя с уже оч давно! хотелось бы весь исходный код с иерархией файлов видеть в доступе на твоем сайте

    • @Alex2772
      @Alex2772  4 роки тому +3

      В следующем видосе я скину ссылки на репозиторий с кодом из туториалов + исходный код Craftgame

  • @Oxewow
    @Oxewow 4 роки тому +8

    Круто! Продолжай в том же духе

  • @elderlyoparysh2800
    @elderlyoparysh2800 3 роки тому

    может это я тупой, но лично мне было не просто усваивать новую информацию в таком темпе, а в остальном вообще заебись, спасибо за ролик.

  • @DOCtorActoAntohich
    @DOCtorActoAntohich 4 роки тому +6

    6:38 "двоеточсие-двоеточие-слэш Гэ-Лэ (б-дь)"

  • @atlasua2021
    @atlasua2021 3 роки тому +1

    Такой красивый почерк))

  • @6556
    @6556 5 місяців тому

    Спасибо большое за туторы. Долго на русском языке искал по буферам инфу. Только второй ролик так и не нашел

  • @den_in_yt
    @den_in_yt 2 роки тому +1

    Какое объявление было у кода:
    {
    mWindow = glfwCreateWindow(width, height, title.c_str(), nullptr, nullptr);
    }
    просто я пропустил

  • @jemm8363
    @jemm8363 4 роки тому +1

    После графической части будешь подключать и синхронить физ. дивиг?

    • @Alex2772
      @Alex2772  4 роки тому +2

      Не для всех игр нужен физический движок

  • @justsample8793
    @justsample8793 4 роки тому +1

    Я не знаю, задавали ли тебе этот вопрос, но, как ты изучал c++? И вот про это всё, как к этому дошел?. Сам хочу заняться этим, и был бы очень признателен за ответ.
    И ещё, спасибо за видосы. Жду продолжения.

    • @Alex2772
      @Alex2772  4 роки тому +1

      Все мои девлоги это и есть процесс обучения C++ и OpenGL

  • @channelbarrel
    @channelbarrel 4 роки тому +1

    Очень бы хотелось увидеть продолжение туториалов. Планируешь продолжать?

    • @Alex2772
      @Alex2772  4 роки тому +1

      Конечно планирую

  • @theoctan8569
    @theoctan8569 4 роки тому +1

    Надеюсь мы ещё вернёмся к шейдерам) и может никто не спрашивал моего мнения, но как насчёт принципа единственной ответственности для класса VAO, который не только хранит атрибуты, также занимается созданием VBO, так и ещё отрисовкой. Знаю, что всё делалось на скорую руку для быстрой демонстрации. Думаю в будущем разделим обязанности) Надеюсь мой коммент заметят и не сильно осудят за многословие.

    • @Alex2772
      @Alex2772  4 роки тому +1

      Так быстрее и проще. Да, конечно, грамотнее было бы разделить VAO и VBO в отдельные классы, но это неоправданные строчки кода. Пример, как я решил задачу по принадлежности точки к окружности за 150 строк (было 10): gist.github.com/MrLargha/4c9e6de03cb7cd2f30b6aea4097ba7ca

  • @ilnev3738
    @ilnev3738 3 роки тому +1

    ряльно полезные уроки

  • @user-tb7su2nj4b
    @user-tb7su2nj4b 3 роки тому

    Джентльмены, а почему в 4-ой строке в моменте 6:17 Алекс подключает библиотеку , если в include он закидывал папку GL большими буквами?

    • @Alex2772
      @Alex2772  3 роки тому

      Потому что винда нечувствительна к регистру букв, а линуксы и макоси - чувствительны. Вижуалка очень не любит, когда в ней пишут кроссплатформенный код. Я ещё её еле отучил от болезни обратного слеша в путях инклюдов

  • @torvald3d
    @torvald3d 3 роки тому

    Что за комбо счётчик справа вверху когда печатаешь? Какой то плагин?

    • @Alex2772
      @Alex2772  3 роки тому +1

      powermode плагин для вижуалки

  • @cppprograms5868
    @cppprograms5868 4 роки тому

    неплохо!!!

  • @KennyTutorials
    @KennyTutorials 4 роки тому +1

    За ВАО, ВБО, ГЛ, ГОЛОГЕН = лайк)

  • @Ivan-qb7kc
    @Ivan-qb7kc 4 роки тому +2

    1:33 - так говоришь, будто это излишняя оптимизация, но ведь ты же вызываешь vector::reserv перед тем, как начать пушить в него элементы, а это тоже самое)

    • @Alex2772
      @Alex2772  4 роки тому +2

      Я не говорю, что оптимизация - это плохо. Речь идёт об усложнении простой задачи новичкам

  • @alex_xplus7135
    @alex_xplus7135 4 роки тому +5

    Ясна, гений(не рили крут)

  • @narzaru
    @narzaru Рік тому

    Привет со школы 21

  • @neyallen949
    @neyallen949 4 роки тому +1

    О да, зашёл с нового аккаунта в Ютуб и начал набирать твой канал и увидел что видео у тебя вышло 6 часов назад)))))

  • @eday4490
    @eday4490 4 роки тому +2

    Подними ещё тему. О том где взять программиста гейм дизайнеру. К примеру если есть идея игры и Арты, но програмить игру некому.

    • @Alex2772
      @Alex2772  4 роки тому +1

      Сделаю видос на эту тему

    • @eday4490
      @eday4490 4 роки тому

      Alex2772 спасибо. Может и игрой займусь)))

    • @ilnev3738
      @ilnev3738 3 роки тому

      Ты художник и программист и гемдизайнист )

    • @ilnev3738
      @ilnev3738 3 роки тому

      Вот так можно

  • @user-nk7mt1rn2v
    @user-nk7mt1rn2v Рік тому

    Алекс почему ты старые видео по-удалял? они очень полезны для новичком, по типу меня

    • @Alex2772
      @Alex2772  Рік тому

      Снесу когда сделаю годную альтернативу

  • @user-tp1qn2wt6t
    @user-tp1qn2wt6t 3 роки тому +1

    на 1:26 версия опенгл версия 1.0 используется

  • @voidptr_t
    @voidptr_t 4 роки тому +1

    Когда качаешь всё из nuget и не нужно линковать

  • @user-pg8ry1tm3t
    @user-pg8ry1tm3t Рік тому

    Все прекрасно, только мелковатый масштаб для просмотра…

  • @user-tb7su2nj4b
    @user-tb7su2nj4b 3 роки тому

    С одной стороны много вопросов, но с другой стороны чем больше комментариев тем популярнее видос. Так вот:
    Пацаны, для полного понимания, скажите, пожалуйста:
    1) что за тип данных такой GLuint?
    2) Что делают функции glGenVertexArray() и glGenBuffers()?
    3) Я правильно понимаю, что в glGenBuffers() первый параметр - номер VAO, к которому мы привязываем создаваемый VBO? Если да, то почему там еденица? Разве нумерация не с нуля начинается?

    • @Alex2772
      @Alex2772  3 роки тому

      1) typedef unsigned int GLuint. В сишных библиотеках считается хорошим тоном определять свои типы.
      2) glGenVertexArray - создает VAO. glGenBuffers - создает VBO.
      3) Нет, первый аргумент - это количество VBO, которое ты хочешь создать. 2м аргументом задаёшь место, где ты будешь хранить номер созданного VBO. с glGenVertexArray работает точно также

    • @user-tb7su2nj4b
      @user-tb7su2nj4b 3 роки тому

      ​@@Alex2772 Понял. Спасибо. Можно переходить к 3-ей части.

  • @builderNITRO
    @builderNITRO 3 роки тому

    Что делать как у меня код как у тебя но треугольник не рисуется в консоль ошибок не выдает и может это связано что у меня фон не черный на оранжевый?

    • @Alex2772
      @Alex2772  3 роки тому

      ua-cam.com/video/psUtXfmmtsE/v-deo.html

    • @builderNITRO
      @builderNITRO 3 роки тому

      @@Alex2772 Я разобрался в чем проблема я в VAO.cpp в функций addVertexBufferObject() где glVertexAttribPointer вместо 3 написал 1

  • @user-xv4hq9qp4h
    @user-xv4hq9qp4h 2 роки тому

    Помогите пожалуйста,я написал код все строки но треугольник не отображается где может быть ошибка (2 цикла я тоже написал)заранее спасибо

    • @Alex2772
      @Alex2772  2 роки тому

      ua-cam.com/video/psUtXfmmtsE/v-deo.html

  • @stalker6345
    @stalker6345 4 роки тому

    0:27 УРА БУДУ КОДИТЬ НА C#

    • @stalker6345
      @stalker6345 3 роки тому

      @Намыс Чекелеков здесь я и подрузомевал юнити

  • @Under-Games
    @Under-Games 4 роки тому

    Давай новый выпуск!

  • @usernameusernamovich8841
    @usernameusernamovich8841 4 роки тому

    Зачем ты отпугиваешь маслят, от языков программирования?

    • @Alex2772
      @Alex2772  4 роки тому +4

      Чтобы было меньше недокодеров

    • @usernameusernamovich8841
      @usernameusernamovich8841 4 роки тому

      @@Alex2772 и как бонус меньше крутых кодеров

    • @Alex2772
      @Alex2772  4 роки тому +4

      Людей, которые хотят стать крутыми кодерами, не отпугнёшь школовидосами на ютубе

  • @KennyTutorials
    @KennyTutorials 4 роки тому

    Vertex Array и Vertex Buffer Objects уже давно не новинка в Open GL)

    • @Alex2772
      @Alex2772  4 роки тому +1

      Угу. Вот только до сих пор встречаются такие кадры, которые в 2к19 используют glVertex?f для загрузки вершин.

    • @KennyTutorials
      @KennyTutorials 4 роки тому

      @@Alex2772Именно это и является проблемой для новичков. Так вот когда я только начал изучать Open Gl, тоже попался на это (это было в начале 18 г), а потом долгое время путался пока не понял, что glBegin glEnd это Fixed Function Pipeline до 3.0, а использование VAO, VBO это New Programable Pipeline 3.0+.

    • @Alex2772
      @Alex2772  4 роки тому

      Изначально хотел сказать об этом в видосе. Но чё-то передумал, видимо зря

  • @ilnev3738
    @ilnev3738 3 роки тому

    Почему когда я меняю местами вершины этого треугольника он отображается не так как раньше?

    • @Alex2772
      @Alex2772  3 роки тому +1

      Потому что в опенгле у треугольника есть лицевая сторона и обратная сторона. При включённом glCullFace обратная сторона не отображается. Какая сторона лицевая, какая - обратная, определяется при помощи векторного произведения. Видимо, когда ты меняешь местами вершины получается так, что треугольник как бы поворачивается к тебе обратной стороной, которая не отображается.

    • @ilnev3738
      @ilnev3738 3 роки тому

      @@Alex2772 нет, треугольник отображается , но не так как до того как я поменял вершины. Например у:
      vao.AddVertexBufferObjects({
      {0, 0.5, 0 },
      {-0.5, -0.5, 0},
      { 0.5, -0.5, 0}
      });
      и
      vao.AddVertexBufferObjects({
      {0, 0.5, 0 },
      { 0.5, -0.5, 0},
      {-0.5, -0.5, 0},
      });
      разные результаты
      Но почему отображается по разному? Получается это из за того что он повернут не так или из за чего?

    • @Alex2772
      @Alex2772  3 роки тому

      @@ilnev3738 Можешь уточнить, чем результаты отличаются?

    • @ilnev3738
      @ilnev3738 3 роки тому

      @@Alex2772 треугольники разные по форме

  • @user-yf8nk6jf4r
    @user-yf8nk6jf4r 4 роки тому

    Я так понял ты забил дальше развивать проект?

    • @Alex2772
      @Alex2772  4 роки тому

      Какой проект?

    • @user-yf8nk6jf4r
      @user-yf8nk6jf4r 4 роки тому

      @@Alex2772 Ну всмысле движок и игру саму

    • @Alex2772
      @Alex2772  4 роки тому

      Нет, не забил. Есть ещё учёба и 3 других проекта

  • @user-tb7su2nj4b
    @user-tb7su2nj4b 3 роки тому

    Тут еще вот такая мистическая фигня происходит:
    Когдая я подключаю сначала glew.h, а потом GL.h, то высвечивается ошибка "gl.h (именно маленькими буквами) included before glew.h", а если подключать их в обратном порядке, то компилятор найдет множество ошибок в файлах glew.h и GL.h. Как выйти из этого порочного круга?

    • @Alex2772
      @Alex2772  3 роки тому

      GL/glew.h и GL/GL.h?

    • @user-tb7su2nj4b
      @user-tb7su2nj4b 3 роки тому

      @@Alex2772 Да. и . В зависимосте от порядка подключения возникают различные ошибки, описанные выше

    • @Alex2772
      @Alex2772  3 роки тому

      @@user-tb7su2nj4b В видео мы создали файл gl.h. Убедись, что ты инклюдишь именно его

    • @user-tb7su2nj4b
      @user-tb7su2nj4b 3 роки тому

      @@Alex2772 я создал именно его и подключаю везде именного его. И в зависимости от того, в каком порядке подключаются библиотеки в нем, выскакивают разные ошибки.

    • @Alex2772
      @Alex2772  3 роки тому +1

      @@user-tb7su2nj4b Именно поэтому я стараюсь не добавлять индклюд gl.h в хеадер файлы. Учти, что порядок индклюда может нарушиться от того, что ты инклюдишь хеадер файл, который индклюдит gl.h. Тут очень тонкая грань, нужно смотреть, дерево включаемых файлов и проверять последовательность. Посмотри в гугле, как это делается

  • @helios8567
    @helios8567 4 роки тому

    gl.h before glew.h.
    Делаю точь в точь, не идёт и всё. Поменял всё местами, один фиг. И это только ради вонючего треугольника! Скинь пожалуйста исходники.

    • @Alex2772
      @Alex2772  4 роки тому +1

      github.com/Alex2772/Engine

  • @Vadim-wi4by
    @Vadim-wi4by 4 роки тому

    Задел так сказать на будущее. Надеюсь чанк будем сделан одним мешем. Ибо очень халтурно копипастить тройным циклом готовые кубы по карте высот. Давай нормальную генерацию и просчёт коллизии.

    • @Alex2772
      @Alex2772  4 роки тому

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

    • @Vadim-wi4by
      @Vadim-wi4by 4 роки тому

      @@Alex2772 супер. То есть будет меш? Вот это интересно смотреть! Кстати, рекомендую начать именно с коллизии. Это довольно важный этап. Сам пробовал, но на C# и со стандартной библой DX на NET 2.0. Там коллизия реализована Mesh.Intersect и этот метод всего лишь пускает луч и даёт тебе индекс треугольника и U V точки. Надеюсь на плючах у тебя будут более доработанные методы для просчёта коллизии.

    • @Alex2772
      @Alex2772  4 роки тому

      Меш будет обязательно, а хорошая реализация коллизии у меня есть. Эти два этапа я разделю и выпущу в виде отдельных видосов

    • @Vadim-wi4by
      @Vadim-wi4by 4 роки тому

      @@Alex2772 ого. Братан, свяжись со мной пожалуйста. Мне нужно узнать у тебя пару вещей.
      vk.com/vadim_yek

  • @yltravi0let_880
    @yltravi0let_880 4 роки тому +2

    Где видео

    • @Alex2772
      @Alex2772  4 роки тому

      У меня форс мажор, извините

  • @supermole4654
    @supermole4654 4 роки тому

    Пролетариат требует 3 серию

    • @Alex2772
      @Alex2772  4 роки тому

      Когда-нибудь, когда-нибудь ~

  • @stepanbazrov6330
    @stepanbazrov6330 3 роки тому

    После конструкции
    VAO v = VAO()
    Вызов v.Draw() не будет ничего рисовать, потому что все буферы будут удалены деструктором временного объекта.

    • @Alex2772
      @Alex2772  3 роки тому +1

      У тебя не получится так сделать. 5:06, смотри девятую строчку - запрещаю конструктор копирования

  • @user-tb7su2nj4b
    @user-tb7su2nj4b 3 роки тому

    Пацаны, у меня компилятор отказывается открывать
    и . С проблем не возникло. Можете подсказать, в чем может быть проблема?

    • @Alex2772
      @Alex2772  3 роки тому

      Добавь папку src в Дополнительные каталоги включаемых файлов. 6:19

    • @user-tb7su2nj4b
      @user-tb7su2nj4b 3 роки тому

      @@Alex2772 Разобрался. Там глупая ошибка оказалась. Спасибо за ответ

    • @Alex2772
      @Alex2772  3 роки тому

      @@user-tb7su2nj4b нет, не влияет. Убедись, что в дополнительных каталогах включаемых файлов есть файлы GLEW'а. Обрати внимание что, откуда и куда я перетаскиваю на 5:32

    • @user-tb7su2nj4b
      @user-tb7su2nj4b 3 роки тому

      @@Alex2772 удалил всё и сделал по-новой, заработало. Фиг его знает, что за магия. В любом случае, огромное спасибо. И за сами ролики, и за ответы на вопросы. За последнее - особенно.

    • @Alex2772
      @Alex2772  3 роки тому

      @@user-tb7su2nj4b Рад помочь)

  • @asx4133
    @asx4133 2 роки тому

    Так я не понял как vbo привязывается к vao?

    • @Alex2772
      @Alex2772  2 роки тому

      функцией glvertexattribpointer. берёт последний бинденный vao, последний бинденный vbo

    • @asx4133
      @asx4133 2 роки тому

      @@Alex2772 да спасибо

  • @The-DanFed-One
    @The-DanFed-One 4 роки тому

    ПЗДЦ... Я попробывал делать точь в точь как у тебя и нифига не работает. "gl.h after glew.h" и даже '#pragma_once' не помогает....

    • @Alex2772
      @Alex2772  4 роки тому

      А я говорил, что писать #include нужно только ПЕРЕД #include . Кроме того, не стоит включать оба эти файла внутри твоих заголовных файлов, иначе может возникнуть та же ошибка с порядком инклюдов и ты задолбаешься искать эту ошибку. Можешь написать на форум alex2772.ru/forums/

  • @who9899
    @who9899 4 роки тому

    Где мой урок по шейдерам????? Ибо сам хуй разберусь, да и было бы не плохо видеть урок или тему на форуме по поводу как для одного объекта создать VBO и вписать туда значения, например координаты вершин, координаты нормалей, координаты UV, id текстуры...

    • @Alex2772
      @Alex2772  4 роки тому

      Уже его озвучиваю.

  • @user-pg8ry1tm3t
    @user-pg8ry1tm3t Рік тому

    И если вы всерьёз думаете, шо сможете обойтись в геймдеве без математики - загуглите термин quaternions…🤪

  • @user-cs9kg4fb9x
    @user-cs9kg4fb9x 4 роки тому

    Лично я прошел базовый курс С++ и на этом видосе сиду ебалом щелкаю, где учить дополнительные библиотеки вообще и какие самые востребованые?

    • @Alex2772
      @Alex2772  4 роки тому +1

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

  • @ZZZ-tf4tx
    @ZZZ-tf4tx 4 роки тому

    У тебя есть дискорд?

    • @Alex2772
      @Alex2772  4 роки тому

      Есть, но не пользуюсь

    • @ZZZ-tf4tx
      @ZZZ-tf4tx 4 роки тому

      @@Alex2772 Можно с тобой поболтать?

    • @ZZZ-tf4tx
      @ZZZ-tf4tx 4 роки тому

      Я нашел тебя)
      чекни лс

    • @Alex2772
      @Alex2772  4 роки тому

      Звучит как угроза

    • @ZZZ-tf4tx
      @ZZZ-tf4tx 4 роки тому

      @@Alex2772 ты вообще в дс заходишь?

  • @novapc425
    @novapc425 4 роки тому +2

    Где минуты с 4-й всё становится непонятно, меньше объясняешь и просто делаешь((

  • @FatherOfPeople
    @FatherOfPeople 3 роки тому +1

    Это что я искал на русском языке

  • @nikitaserik9938
    @nikitaserik9938 4 роки тому

    vyt pfitk
    мне зашел

  • @voidptr_t
    @voidptr_t 3 роки тому

    Пишу спустя полтора года. Вообще только биндить вао не безопасно, желательно всегда его "освобождать": glBindVertexArray(0);

    • @Alex2772
      @Alex2772  3 роки тому

      Необязательно

    • @voidptr_t
      @voidptr_t 3 роки тому

      @@Alex2772 так я сказал "желательно"

  • @user-nd3vv5fn5e
    @user-nd3vv5fn5e 4 роки тому +1

    на сколько же SFML проще!

    • @Alex2772
      @Alex2772  4 роки тому +2

      SFML почти всё делает за тебя. Unity+C# ещё проще

  • @user-kb8dt1cs4i
    @user-kb8dt1cs4i 4 роки тому

    На каком языке делать читы на майнкрафт?

    • @user-og5hn2lc4y
      @user-og5hn2lc4y 4 роки тому

      тебе не нужно

    • @user-kb8dt1cs4i
      @user-kb8dt1cs4i 4 роки тому

      @@user-og5hn2lc4y Просто интересно

    • @Alex2772
      @Alex2772  4 роки тому

      Если просто интересно, но на Java. Как и все моды для майна.

    • @channelbarrel
      @channelbarrel 4 роки тому +2

      на HTML

    • @ilnev3738
      @ilnev3738 3 роки тому

      На двочином коде

  • @zergon321
    @zergon321 3 роки тому

    Если тебе нужны именно компилируемые языки, то можно юзать Go и Rust, а не б-гомерзкий С++.

    • @Alex2772
      @Alex2772  3 роки тому +2

      Дельфи, говорят, тоже компилируемый, и его тоже можно использовать вместо С++

    • @zergon321
      @zergon321 3 роки тому

      @@Alex2772 Delphi устарел и его никто не использует, а Go и Rust актуальны.

    • @Alex2772
      @Alex2772  3 роки тому +2

      @@zergon321 ну используй rust или go в этом проекте, я что, тебе запрещать буду что-ли

    • @ilnev3738
      @ilnev3738 3 роки тому

      С++ лучше

    • @zergon321
      @zergon321 3 роки тому

      @@ilnev3738 чем?

  • @anoona5015
    @anoona5015 4 роки тому

    Шутка про ассемблер зашла))))) ну там где про прерывания. оказуалили программирование раньше хочешь микропроцессор юзать учи ассемблер ща ардуино. языки тип python java и особенно вэб типо php способны только на лаганое дерьмо. 100% уверен что если заебаться и на ассемблере написать игру с графой 2019 года(это пиздец я ели змейку написал) она на пентиуме пахать будет(возможно преувеличил но оптимизация капитальная)

    • @Alex2772
      @Alex2772  4 роки тому +1

      Графика больше зависит от видеокарты, чем от центрального процессора. Хотя можно, конечно, изучить ассемблер для видеокарт.
      Но с оказуаливанием программирования согласен. Яркий тому пример - вышеупомянутый веб-уеб. Мне не совсем понятно, почему весь ор по большой нагрузке на железо веб-браузеров идёт на создателей веб-браузеров, а не уеб-разработчиков. Ведь тупорылые одностраничные говносайты лагают именно из-за уеб-разработчиков, которые не хотят ничего делать и используют громоздкие javascript-фреймворки и библиотеки по типу jquery и vue, что только отрицательно сказывается на производительности. А разработчикам веб-браузеров приходится разгребать всё это их дерьмо и писать оптимизации, которые мамкины уеб-разработчики по курсам "за 2 недели" не умеют делать и, что самое страшное, не хотят научиться.

    • @anoona5015
      @anoona5015 4 роки тому

      @@Alex2772 могу скинуть пруфы

    • @Alex2772
      @Alex2772  4 роки тому

      Я обвиняю уеб-разработчиков, а не JS или нормальных веб-разработчиков. Тут тонкая грань)
      Пыха тоже нормальный язык. Не станешь же ты писать хоум-пейдж на свой сайт на си.
      Про передачу аргументов. Тут тоже всё не так просто. Надо смотреть на итоговый код в дизассемблере. Первые четыре аргумента чаще всего передаются через регистры, т.е. память вообще не задействуется. Всё, что не влезет, передаётся через стек. В случае передачи всего через указатель на структуру в любом случае задействует память, что медленнее, чем через регистры.
      Про движение травы. От процессора требуется только увеличивать какую-либо переменную с каждым кадром, после чего запихивать её в видеокарту. Движение травы просчитывает вершинный шейдер в видеокарте.

    • @Alex2772
      @Alex2772  4 роки тому

      При компиляции с оптимизацией стек по максимуму вычищается.

  • @netjoker1000
    @netjoker1000 2 роки тому +1

    как же вы достали начинать и бросать уроки по OGL. ни чо на русском нет( . обидно за державу))

    • @Alex2772
      @Alex2772  2 роки тому +1

      "мы" это кто?

    • @netjoker1000
      @netjoker1000 2 роки тому +1

      @@Alex2772 ты и такие как ты)

    • @comachine
      @comachine 2 роки тому +2

      Согласен, везде что то по типу -
      1 Часть: Запускаем окно
      2 Часть: Рисуем квадратик/кружочек/треугольник в окне
      3 Часть: Подрубаем какую то хуй пойми какую графическую поеботу в код, которая нихуя не делает
      4 Часть: Фиксим и оптимизируем
      - Ну и всё, а "что вы хотели блять, это начало, для новичков, а остальное читать в 9000 страничных книгах по графике, математике и C++"

    • @netjoker1000
      @netjoker1000 2 роки тому

      @@comachine да поxyй все равно ютуб закроют наверно(

    • @comachine
      @comachine 2 роки тому

      @@netjoker1000 не навсегда.