- 129
- 693 692
SimpleCoding
Germany
Приєднався 10 лип 2018
Всем привет!
Меня зовут Александр, и здесь на канале я буду выкладывать различные обучающие видео по программированию на C++ и мои проекты, связанные с 3D графикой и OpenGL
Меня зовут Александр, и здесь на канале я буду выкладывать различные обучающие видео по программированию на C++ и мои проекты, связанные с 3D графикой и OpenGL
3D Game Engine | 40 | OpenGL debug
Подключаем callback для обработки ошибок OpenGL (от версии 4.3)
Устаревшая функция glGetError:
registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml
Функция для подключения callback glDebugMessageCallback:
registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageCallback.xhtml
Возможные значения параметров:
www.khronos.org/opengl/wiki/Debug_Output
Управление фильтрами выдачи ошибок glDebugMessageControl:
registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageControl.xhtml
----------------------------------------------------------------------------------------------------------
Коммит:
github.com/simple-coding-channel/SimpleEngine/commit/17a788ed22fa65bcb81b3694950f1a24291c8fe3
----------------------------------------------------------------------------------------------------------
GitHub проекта:
github.com/simple-coding-channel/SimpleEngine
----------------------------------------------------------------------------------------------------------
Discord Server:
discord.gg/ztyWExwRQ2
----------------------------------------------------------------------------------------------------------
Мои соцсети:
VK: mtrx1
Twitch: www.twitch.tv/matrix_x
Instagram: al.exander7683
----------------------------------------------------------------------------------------------------------
Поддержка канала:
www.donationalerts.com/r/matrix_x
fantalks.io/r/matrix_x
www.patreon.com/user?u=74455138
Устаревшая функция glGetError:
registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml
Функция для подключения callback glDebugMessageCallback:
registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageCallback.xhtml
Возможные значения параметров:
www.khronos.org/opengl/wiki/Debug_Output
Управление фильтрами выдачи ошибок glDebugMessageControl:
registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageControl.xhtml
----------------------------------------------------------------------------------------------------------
Коммит:
github.com/simple-coding-channel/SimpleEngine/commit/17a788ed22fa65bcb81b3694950f1a24291c8fe3
----------------------------------------------------------------------------------------------------------
GitHub проекта:
github.com/simple-coding-channel/SimpleEngine
----------------------------------------------------------------------------------------------------------
Discord Server:
discord.gg/ztyWExwRQ2
----------------------------------------------------------------------------------------------------------
Мои соцсети:
VK: mtrx1
Twitch: www.twitch.tv/matrix_x
Instagram: al.exander7683
----------------------------------------------------------------------------------------------------------
Поддержка канала:
www.donationalerts.com/r/matrix_x
fantalks.io/r/matrix_x
www.patreon.com/user?u=74455138
Переглядів: 3 896
Відео
3D Game Engine | 39 | Separate attribute format, VAO, VBO
Переглядів 2,3 тис.Рік тому
Рассмотрим как разделить задание формата атрибутов в VAO от биндинга VBO (только для версий OpenGL от 4.3) Коммит: github.com/simple-coding-channel/SimpleEngine/commit/f1423698fd157b528dfac0fc2f56c305435535df GitHub проекта: github.com/simple-coding-channel/SimpleEngine Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Instagram: al...
C++ с нуля | 17 | struct
Переглядів 1,6 тис.Рік тому
Рассмотрим как задавать свою собственную структуру struct, доступ к внутренним переменным, как разыменовать указатель и особенности выравнивания данных в структурах Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Поддержка канала: www.donationalerts.com/r/matrix_x fantalks.io/r/matrix_x www.patreon.com/user?u=74455138
3D Game Engine | 38 | Матрица нормали
Переглядів 1,6 тис.Рік тому
Разберем как строится матрица нормали, переместим расчет освещения в систему координат камеры и сделаем кое-какие оптимизации Коммит: github.com/simple-coding-channel/SimpleEngine/commit/d67647483794e4f4904ac2f42b5f3cb8e740e58f GitHub проекта: github.com/simple-coding-channel/SimpleEngine Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Instagra...
3D Game Engine | 37 | Освещение, модель затенения Фонга
Переглядів 2 тис.2 роки тому
Создадим источник света и реализуем модель затенения по Фонгу Коммит: github.com/simple-coding-channel/SimpleEngine/commit/f6412921c2163b70c6e8e2a50ed00459308fe953 GitHub проекта: github.com/simple-coding-channel/SimpleEngine Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Instagram: al.exander7683 Поддержка канала: www.donationa...
3D Game Engine | 36 | ImGui, Resize, Field Of View
Переглядів 1,4 тис.2 роки тому
Дорабатываем GUI, добавляем новые настройки камеры и исправляем баг с вьюпортом Коммит: github.com/simple-coding-channel/SimpleEngine/commit/40222a917dd8263124586b56c337d4432bd22b09 GitHub проекта: github.com/simple-coding-channel/SimpleEngine Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Instagram: al.exander7683 Поддержка кан...
C++ с нуля | 16 | enum
Переглядів 2,2 тис.2 роки тому
Рассмотрим что такое перечисления enum, зачем они нужны и как их использовать Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Поддержка канала: www.donationalerts.com/r/matrix_x www.patreon.com/user?u=74455138
3D Game Engine | 35 | Буфер глубины (Depth Buffer)
Переглядів 1,3 тис.2 роки тому
Добавляем куб в сцену и знакомимся с буфером глубины Коммит: github.com/simple-coding-channel/SimpleEngine/commit/1214099757cb84c479c033a6657c1f2fb4e5d62c GitHub проекта: github.com/simple-coding-channel/SimpleEngine Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Instagram: al.exander7683 Поддержка канала: www.donationalerts.com...
3D Game Engine | 34 | Класс Texture2D
Переглядів 9002 роки тому
Инкапсулируем создание текстуры OpenGL в отдельный класс Texture2D Коммит: github.com/simple-coding-channel/SimpleEngine/commit/a432178c5b1a9e0aefbf4fef059d92dd630e0eac GitHub проекта: github.com/simple-coding-channel/SimpleEngine Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Instagram: al.exander7683 Поддержка канала: www.dona...
3D Game Engine | 33 | Фильтрация текстуры, алиасинг
Переглядів 8802 роки тому
Рассмотрим что такое алиасинг, почему он возникает и как с ним бороться (Mip-Map, trilinear interpolation, nearest neigbour, bilinear interpolation) GitHub проекта: github.com/simple-coding-channel/SimpleEngine Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Instagram: al.exander7683 Поддержка канала: www.donationalerts.com/r/mat...
3D Game Engine | 32 | Текстуры
Переглядів 1,4 тис.2 роки тому
Что такое текстуры и как их использовать в OpenGL Коммит: github.com/simple-coding-channel/SimpleEngine/commit/06a0d82ce83626e2643940c2a9611f0cb8dae317 GitHub проекта: github.com/simple-coding-channel/SimpleEngine Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Instagram: al.exander7683 Поддержка канала: www.donationalerts.com/r/...
3D Game Engine | 31 | Вращаем камеру мышкой
Переглядів 1,5 тис.2 роки тому
Добавляем возможность вращать камеру с помощью мышки Коммит: github.com/simple-coding-channel/SimpleEngine/commit/4911912cf3b81c1268fdfd3361175386f56eeccf GitHub проекта: github.com/simple-coding-channel/SimpleEngine Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Instagram: al.exander7683 Поддержка канала: www.donationalerts.com...
C++ с нуля | 15 | Циклы while, do while, for
Переглядів 1,7 тис.2 роки тому
Рассмотрим циклы while, do while, for и операторы управления циклом Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Поддержка канала: www.donationalerts.com/r/matrix_x
3D Game Engine | 30 | Углы Эйлера, двигаем и вращаем камеру
Переглядів 1,6 тис.2 роки тому
Разбираем, что такое углы Эйлера и как с их помощью мы можем управлять камерой Коммит: github.com/simple-coding-channel/SimpleEngine/commit/d064d932cf98f76f577391a89c81a8652b2f0f2b GitHub проекта: github.com/simple-coding-channel/SimpleEngine Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Instagram: al.exander7683 Поддержка кана...
3D Game Engine | 29 | Управляем камерой
Переглядів 1,3 тис.2 роки тому
Добавляем ивенты нажатия клавиш и управление камерой Коммит: github.com/simple-coding-channel/SimpleEngine/commit/c9b6c631a3d84a2a677057e69b3c41ea355aa81d GitHub проекта: github.com/simple-coding-channel/SimpleEngine Discord Server: discord.gg/ztyWExwRQ2 Мои соцсети: VK: mtrx1 Twitch: www.twitch.tv/matrix_x Instagram: al.exander7683 Поддержка канала: www.donationalerts.com...
3D Game Engine | 28 | Рефакторинг, Editor
Переглядів 1,2 тис.2 роки тому
3D Game Engine | 28 | Рефакторинг, Editor
3D Game Engine | 27 | ImGui docking & viewports
Переглядів 2,4 тис.2 роки тому
3D Game Engine | 27 | ImGui docking & viewports
3D Game Engine | 26 | OpenGL Renderer
Переглядів 1,5 тис.2 роки тому
3D Game Engine | 26 | OpenGL Renderer
C++ с нуля | 13 | Ветвление: if else
Переглядів 1,5 тис.2 роки тому
C с нуля | 13 | Ветвление: if else
3D Game Engine | 25 | Построение матрицы перспективной проекции
Переглядів 2 тис.2 роки тому
3D Game Engine | 25 | Построение матрицы перспективной проекции
3D Game Engine | 24 | Построение матрицы ортографической проекции
Переглядів 1,4 тис.3 роки тому
3D Game Engine | 24 | Построение матрицы ортографической проекции
3D Game Engine | 22 | Системы координат
Переглядів 1,6 тис.3 роки тому
3D Game Engine | 22 | Системы координат
3D Game Engine | 21 | Матрица трансформации
Переглядів 3,6 тис.3 роки тому
3D Game Engine | 21 | Матрица трансформации
3D Game Engine | 18 | Система координат, вектор
Переглядів 1,1 тис.3 роки тому
3D Game Engine | 18 | Система координат, вектор
3D Game Engine | 17 | Индексный буфер
Переглядів 1,2 тис.3 роки тому
3D Game Engine | 17 | Индексный буфер
Для ядро Linux примеры надо только делать.
Ооп? Не, не слышал.
в своей сути уроки очень годные. НО при условии что человек пойдёт читать про Cmake дальше и вне данных уроков. Данный видеоматериал прекрасен для демонстративной практики и ужасен как теоретическая база. Это скорее : вам ну очень срочно надо собрать проект и научиться этому ну вот прям щас. Как пример данный урок, он начался с понятия переменных. Но автор не говорит что это и как применять, зато демонстрирует синтасис и методы его использования
то, чего мы не достойны, но так нуждаемся
Так начнём. Я использую VScodium на Linux. Уже чуть, чуть знаю c++ по одной книжке и ютубу.
Брат я так долго тебя искал 😊😅
Здравствуйте! Подскажите, пожалуйста, а если в VS выбрать изначально создание проекта с CMake, то все эти действия можно опустить и IDE сама все проделает?
Не заметил, такого, да и ещё несколько часов мучался с установкой библиотеки, так и не установил.
Большое спасибо тому кто создал это чудо, все очень понятно и здорово, когда не пользуешься IDE и пытаешься собрать свой проект с этим прости господи дерьмом. То компилятор не видет, то еще что то, в итоге 4 часа в попытках просто собрать проект Hello World перерасло в оторжение к этому ПО и не желание его в дальнейшом использовании
отличное видео, все понятно обьяснил, спасибо!
Решил освоить компьютерную графику. У меня в вузе 9 лаб, решил понять суть +Cmake + git есть, всё очень сложно. Но я понимаю, что без понимания сборки проекта и понимания сути, я не смогу двинуться в своём развитии дальше. Но у меня уже есть желание забить и скопипастить готовые лабы. Но я не планирую сдаваться, осталось всего лишь понять, что такое vao, vbo шейдеры и тд
Бро, а как компилировать через minGw? У меня vscode
😮 И это так просто создается окошко программы!? Кошмар какой...
А чо через интерфейс cmake нельзя получить exe файл? Через консоль мы это сделали(т.е. не открывая visual studio ) а через интерфейс?
Отличное видео! А где во всей этой истории место open gl на каком этапе он входит в работу и как работает если рисует все движок, что рисует open gl?
если делаешь уроки - то делай шрифт на экране большой - ничего не видно
молодцом . хорошо объясняешь ! и речь поставлена.
Непонятно, что за магия. Пробовал повторить. Не работает движение по направлению взгляда. Кто-то пробовал еще? У кого-то вышло?
Спасибо за ролик. Подскажите, кто-нибудь сталкивался с такой проблемой: Debug Assertion Failed! Program: D:\SimpleCoding\battle_city\build\bin\Debug\Battle_city.exe File: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\vector Line: 1904 Expression: vector subscript out of range For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.
У кого такая ошибка <CMake Error: The source directory "Путь_Каталога" does not appear to contain CMakeLists.txt. Specify --help for usage, or press the help button on the CMake GUI.> после запуска команды <cmake ..>, то рекомендую попробовать всё заново следуя по инструкции в этом ролике --> ua-cam.com/video/qKXzmd_P8PE/v-deo.html .Мне помогло, надеюсь и вам поможет.
Не пойму, а почему нельзя просто через облако обмениваться этими файлами? Также не понимаю: если будет куча разных версий одного файла от разных разработчиков, то все равно ведь кто-то еще должен взяться за то, чтобы из каждого файла взять что-то конкретное и сделать один совершенный? Или как это работает? Просто именно этот момент неясен - в чем удобство?
так это и есть облако
@@dd95-5 в чем же преимущества этого перед другими?
@@B-Kent-X потому что два файла одной коммандой мерджить можно
Чувак это было сделано еще в начале 90х
9:46
Не понятно как сделал запуск
спасибо но достаточно только как по мне только как сохранять загружать и как отправлять на гитхаб
тебе достаточно, как человеку, который никогда норм проекты не делал
Уверен, что дальше это будет сказано, но если у вас mac, то там версия OpenGl 4.1 была максимальной. Нужно в коде прописать еще glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
Спасибо за введение. Мне понравилось.
я бы предпочел создать одну include директорию со всеми класами, чем отдельно подключать их в ide
Помогите пожалуйста разобраться! Очень странно, программа работает, но отладчик не заходит внутрь файла ResourseManager. Просто проскакивает все точки останова внутри него, проскаивает все строки связанные с ним в mine и идёт дальше до конца программы и успешно отрисовывает треугольник. А на точках останова внутри класса ResourseManager пишет "В настоящий момент попадания в точку остановка не произойдет. Нет загруженных символов для этого документа."
Возможно, вам захочется проверить свойства вашего проекта в разделе Компоновщик> Отладка> Создание файла базы данных программы и сгенерировать информацию об отладке. Убедитесь, что эти два параметра установлены правильно. Также проверьте, установлен ли в разделе C/C++ > Общие > Формат отладочной информации параметр «База данных программы для редактирования и продолжения» (/ZI) или что-то подобное. Наконец, проверьте, что все ваши проекты и файлы в решении настроены на компиляцию в режиме Debug, а не в режиме Release или как-то иначе, потому что для этого проекта/файла не будут создаваться (и, следовательно, не будут загружаться) символы. Надеюсь, это немного поможет.
Привет. По всей видимости что-то пошло не так, так как при перемещении камерой, а потом при попытке осмотреться мышкой происходит одновременное смещение(по всей видимости накапливается durection)
А какие методы отладки ошибок времени исполнения вы используете? Лично я долго выбирал курсы по IT, рассматривал разные компании, но в итоге остановился на Skypro. Проработал 7 лет в сфере обслуживания, но всегда хотел попробовать себя в IT. После курса получил оффер и перешел на удаленку, ни разу не пожалел))
Да опять вы, уже в котором видео встречаю эту недореклмау
Столько уроков, а самого главного не нашёл. Мне нужно собрать проект со сборкой статической библиотеки, подключением её для запуска гугл тестов, а так же выводом через gcovreport отчёта о покрытии методов всех классов. Как это делается через обычный мейк я знаю. Хотел понять, как это сделать через симейк. По идее же симейк должен упрощать рутинную ручную сборку через мейк.
Все еще не понимаю, зачем нужен CMake, если используется IDE. В VS и так встроенный сборщик. Зачем нужен этот страшный CMake?
Cmake необходим для кроссплатформенной сборки проекта, так например, запустить не через VS, и вообще не на винде, а на линуксе например, у тебя всё равно создаться файл проекта для той IDE, в которой ты запустил, работает и в обратную сторону, для VS Cmake так же собирает файл проекта. Так же он даёт широкий простор при сборке вприцнипе. Например можно создать различные сборки для сервера игры, игры, игры и сервера вместе, втроить поддержку различных архитектур, отдельные дебаг версии для разработчиков, в общем возможностей куча, главное уметь ими пользоваться
@@voldexgray Насколько я понял, Cmake нужен для автоматического преобразования текстовых файлов с кодом в нужный файл проэкта(visual studio для виндовс, qrcreator для линукс и т.д.) и наоборот, из файла проэкта в код, который потом можно где угодно редактировать. Скорее всего у нас будет не один файл, а целая папка, и папка в папке с кодом. В visual studio пришлось бы создавать всякие настройки, зависимости, указывать кто является файлом заголовка, а кто файлом кода, и все это вручную. А cmake дает инструкцию как это сделать для любой системы. А если я вдруг скачал новую версию visual studio и старые файлы проэктов она не открывает из-за несовместимости форматов, я запускаю cmake файл, и создаю уже новый файл проэкта. Тоже самое, если я вдруг решу запилить свою прогу под qtcreator линукс(например). Я правильно понял?
@@Shadowfight-z5f, я тебя абсолютно не понял
Отличная серия уроков! Большое спасибо! У меня есть одно замечание к этому уроку: мы AnimatedSprite наследуем от Sprite, но деструктор ~Sprite() не сделали виртуальным
Возможно для кого-то будет полезным. На 16:32 в коде vertex_shader перемножаются матрицы изменения масштаба и вращения. Обратите внимание на порядок!! Сначала идёт матрица вращения (rotate), а затем матрица изменения масштаба (scale). Я сделал наоборот, и у меня при вращении получалась дичь. Возможно кому-то помогу
Классно, жаль мало подписчиков 😒
Все круто,но есть вопрос. Почему порядок умножения матриц обратный? Типо по такой логике если у нас есть текстура, и мы в render loop пишем glm:: translate и glm::rotate для матрицы mat пускай. Тогда какой эффект будет по логике обратного умножения: текстура повернется и сместится и так далее(поворот от времени зависит), в результате у нас должен получиться эффект того что текстура вращается не вокруг оси а сама вращается вокруг. Но такой эффект уже наблюдается при glm::rotate glm::translate,почему?
Спасибо за туториал, только предупреждающий цвет светофора все таки желтый)
Очень крутой туториал, несмотря на то, что лучше читать, чтобы понять, то здесь можно посмотреть это видео) Но все же я бы рекомендовал для начала раскрывать тему с make, в качестве базы.
Все же я бы рекомендовал для начала раскрывать тему с архитектуры компьютера , в качестве базы
Где можно взять эту текстуру?
Все супер. Вот такой вопрос у меня возникает. Можно ли проверять скомпилированному шрейдера на поле m_id не заводя булево поле. Например если оно не скомпилировало по идентификатор будет всегда равен 0 а если скомпилирован то больше 0? Или там идентификатор может быть равен 0 после компиляции?
3:18 эксплицитно это explicit? Похоже, что так.
ваще не ебу что это за клизма сраная. Почему нельзя просто запустить 'gcc ./имя-файла-с-программой.с' и все???
гуру
Ролик полезный, но клавиатуру я бы об стену размазал..
У меня почему-то немного иной путь получается D:\mygame\build\bin\Debug\game.exe
Тайминг 25:15
Всё хорошо в данной серии видео, кроме размера шрифта :(
Лучшее видео для сна
А вообще говоря, Александ, Вы создали отличный фреймворк - для новичка самое то. Можно почувствовать себя джуниором в промышленной компании (ну или хотя бы стажером %)). Я понимаю, что у Вас не хватает времени или мотивации продолжать проект, но молодые ребята могут уже на этом этапе развивать его для себя. Например, можно адаптировать уроки от Де Вриеса (LearnOpenGL) - продвинутая работа с освещением (HDR, PBR, тени и т.п.), загрузка моделей, анимации. Можно добавить что-то из Ogldev (Итая Миэри): у него много интересного про анимации и работу с рельефом и т.д.
Можно ссылку на коммит
При установке исходных позиций мыши в on_mouse_button_event нужно ли делать проверку pressed?