Я прежде, так долго, никогда в жизни не рисовал треугольник :) P.S. Также как и у всех, треугольник был белый. Первое что я сделал это добавил вывод ошибок при компиляции шейдеров. А дальше, решить проблему было лишь вопросом гугления и исправления. В моем случае, проблема была в том, что компилятор говорил что у меня OpenGL2. Вывод ошибки: "Version number not supported by GL2". Версия #version 460 - не поддерживается OpenGL2. Хотя функция, которой мы воспользовались glGetString(GL_VERSION) - сообщала, что у меня версия 3.3.11672. Только я по итогу не понял, мы выводим версию glad или версию OpenGL? Тогда не понятно, почему компилятор считает что у меня OpenGL2, а glad сообщает, что у меня версия 3.3.1... В общем я поменял версию GLSL на 110, потому что стаковерфлоу говорит, что OpenGL2 работает только с GLSL версией 110. И все заработало. Вывести ошибки компиляции шейдеров в консоль: int success; char infoLog[512]; glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &success); if(!success) { glGetShaderInfoLog(vertex_shader, 512, NULL, infoLog); std::cout
@ivanvostrilov1578 Жыл бұрын
Спасибо автору огромное! Всё получилось ! Советую ребятам сразу подумать об обработке ошибок, сильно ускоряет процесс разработки :)
@TopConductor3 жыл бұрын
Спасибо за урок. Тяжко конечно так было только из видео понять, очень много функций разных. Потратил много времени читая постороннюю литературу чтобы понять что к чему. Было бы неплохо если бы ты давал домашнее задание, например нарисовать 2 треугольника с разными цветами в этом примере.
@bogdns3 жыл бұрын
Никогда так не радовался обычному треугольнику)
@SimpleCodingChannel3 жыл бұрын
Это как hello world под OpenGL)
@rexstar14184 жыл бұрын
Как всегда, всё на высоте. Спасибо!
@ghazull88584 жыл бұрын
в целом всё здорово, но понятности вопроса шейдеров - нульпоинтер
@SimpleCodingChannel4 жыл бұрын
я бы мог посоветовать поискать еще каких-нибудь книжек по шейдерам, чем больше источников информации, тем проще потом понять общую картину
@bridgebaby4256 ай бұрын
@@SimpleCodingChannel а вы не могли бы посоветовать книгу где подробно разъясняют про шейдеры. спасибо большое за такой труд. Видосы супер!
@original206211 ай бұрын
А есть ли какие-то материалы по написанию шейдеров? И какими материалами пользовались вы для изучения?
@kpanat11 ай бұрын
Есть конечно... По идее мы должны были создать 2 файла но мы всё впихнули в 2 строки. Это не оч хорошо, но можно...
@epickby94764 жыл бұрын
получился белый треугольник ( glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5); единственная разница с кодом , так как на 6ке , окно не открывает , версию в шейдере менял , но цвет так и не появился , а вообще пока гуглил эту проблему , то наткнулся на шейдеры написанные на с++ и не понятно зачем было писать как в уроке ) спасибо за урок , было очень познавательно) ну и немного фидбека(хотя видео уже полгода и возможно вы уже это изменили ) очень напрягает отрисовка пробелов с помощью точек и иногда можно не заметить минуса или тд, зависит от качества видео , а в git это ещё сильнее проявляется)
@SimpleCodingChannel4 жыл бұрын
Я изменил тему студии на темную, думаю, должно быть получше. Но я к точкам так привык, что без них мне уже как-то некомфортно)
@epickby94764 жыл бұрын
@@SimpleCodingChannel понятно, ещё раз спасибо за курс)
@study_C_plus_plus_together Жыл бұрын
Был черный треугольник, вместо цветного. Решение, исправление небольшой опечатки в описании "const char* fragment_shader =" а именно, я написал flag_color = vec4(color, 1.0); а должен был быть frag_color спасибо за урок, продолжаю вместе с Вами делать игру)
@makshekh8246 Жыл бұрын
это же название переменной, там может быть любое значение
@WhiskeyRomeoCocaCola Жыл бұрын
в копилку возможных причин, написание gl_position вместо gl_Position в " gl_Position = vec4(vertex_position, 1.0);"
@kpanat11 ай бұрын
Я до этого учил SFML. Но там вертексы не трансформируются. Хотя никто не мешает вручную делать аффинные преобразования...
@doctor_livsi_pod_phonk Жыл бұрын
Привет, незнаю ответишь ли ты) а можно ли менять вот эту строку с программой шейдером, вставив туда какую то переменную конкатенацией) я так на php и js делал, тут так прокатит или нет?)
@SimpleCodingChannel5 жыл бұрын
прошу прощения за голос, весенняя аллергия...
@oculus13715 жыл бұрын
Спасибо, отличный урок!
@kpanat11 ай бұрын
По моему он точку с запятой пропустил после выходной переменной out. У меня не работало. Прсото ничего не рисовало. Я скачал файл с комита и начал сравнивать со своим... Потом недерминирование исправления и заработало. Почему не знаю. Программа была вроде бы правильная. И что я исправил не отследил. Но видимо была какая-то неточность. Скорей всего в шейдерах... Плохо то, что ошибку не отследишь. Эти функции ничего не возвращают исключений не генерят. И непонятно толи работают толи нет. А если не работают, то где и что не так? А хрен его знает... Но при этом не рисовали. А потом вдруг стали рисовать... всё в точности! Но почему???!!! Тоже неясно... ну ладно потом разберёмся...
@DarkStar-rq3cw5 ай бұрын
Да, так и есть, там "in vec3 color", а должно быть "in vec3 color;" (это кусок кода с 30-ой строки кода из коммита)
@kpanat11 ай бұрын
Ну вобще мб и другая интерполяция. В данном случае используется линейная. Это довольно грубая... Она даёт ребристую структуру. Можно использовать квадратичную будет поглаже, но между треугольниками. Если мы хотим плавное сопряжение то надо кубическая. Только она даёт плавные переходы на стыках... И можно снизить уровень дискретности без искажений. Но я не знаю никого кто бы так делал. Хотя идея простая и стара как мир...
@original2062 Жыл бұрын
Спасибо большое за видео! Очень полезно и информативно всем советую! У меня такой вопрос, почему при просмотре других людей по урокам OpenGL они используют какую-то другую библиотеку gl и у них строчки кода категорически отличаются от ваших. Например чтобы начать рисовать объект они пишут glBegin(то что хотят нарисовать ) и т.д.
@SimpleCodingChannel Жыл бұрын
Это еще старый OpenGL, до версии 3.2. Лучше с него не начинать, а сразу учиться на новом. Ну только если нет необходимости поддерживать старое железо
@original2062 Жыл бұрын
@@SimpleCodingChannel ааааа, все теперь понятно. Большое спасибо!
@vasylpurskyi80083 жыл бұрын
Спасибо за урок
@РусланС-ж8л2 жыл бұрын
Здравствуйте! Подскажите где взять информацию о функциях библиотеки? Вы так хорошо рассказываете про каждую функцию и про ее аргументы. Но сколько бы я не гуглил не могу найти литературу ни на одну библиотеку.
@SimpleCodingChannel2 жыл бұрын
По библиотекам практически не бывает литературы, это нужно смотреть документацию разработчиков или просто читать комментарии в коде и экспериментировать с примерами.
@РусланС-ж8л2 жыл бұрын
@@SimpleCodingChannel Как все сложно. Я самостоятельно взялся изучать программирование. Это как хобби. Дошел до библиотек, а тут засада, информации ни какой пойти нет. Буду пробовать изучать примеры. Спасибо за подсказку! Это тоже не маловажная информация. А вообще было бы очень классно если бы вы выпустили видео от том как вы изучаете новую библиотеку. Скажем так вам нужна какая-то функция, вы находите подходящую библиотеку, разбераете ее функционал и эксперементируете с кодом. Это позволит новичкам таким как я понять алгоритм действия при изучении. Этого очень как не хватает. Алгоритм изучения очень важен для любого ученика.
@SimpleCodingChannel2 жыл бұрын
Хорошее и полезное хобби) спасибо ха фидбэк, буду стараться это тоже учитывать
@РусланС-ж8л2 жыл бұрын
@@SimpleCodingChannel не могу разобраться уже второй день. Треугольник рисует но он белый. Код перепроверил несколько раз. Возможно в верси opngl 3.1 эта функция пишется по другому или ее вообще нет в токой реализации? Но найти ничего не могу. Подскажите в чем может быть дело?
@SimpleCodingChannel2 жыл бұрын
Для OpenGL 3.1 надо использовать другую версию glsl 1.40. Это надо в самом начале шейдера писать #version 140. Возможно что-то еще надо изменить, но я уже не подскажу, тут надо поискать в интернете рабочие примеры именно под эту версию.
@bogdns3 жыл бұрын
Логика после pygame непривычна. В pygame каждый пиксель контролируешь без заморочек
@SimpleCodingChannel3 жыл бұрын
Да. но внутри он тоже скорее всего использует старый добрый OpenGL. Самому писать графику без помощи библиотек конечно сложней
@denizeteo Жыл бұрын
Помогите, при запуске программы выходит белый триугольник, даже с коммита кот скопировал все равно также. Подскажите, это проблема с ноутом? Заранее спасибо
@SimpleCodingChannel Жыл бұрын
Скорее всего видеокарта не поддерживает последнюю версию OpenGL, либо проблема с драйверами
@Ivan-lx5lw4 жыл бұрын
Как решить проблему если видеокарта поддерживает лишь до версии 3.0 OpenGL? При запуске программы треугольник белый.
@SimpleCodingChannel4 жыл бұрын
А какая у вас видеокарта? Может проблема в устаревшем драйвере?
@Ivan-lx5lw4 жыл бұрын
@@SimpleCodingChannel проблема в устаревшем железе
@SimpleCodingChannel4 жыл бұрын
Тогда только менять видеокарту..
@nami_gamedev3 жыл бұрын
нужно снизить версию шейдера в шейдерной программе
@ii44633 жыл бұрын
@@nami_gamedev Привет, та же ошибка - белый треугольник. Ставил версию шейдера #version 450 ( А версию GLFW как Major 4 Minor 5, ибо 4.6 у меня не работает). Рисует белый треугольник. Какую версию можно попробовать поставить?
@obtain4043 жыл бұрын
Всё здорово, но вот у меня только белый треугольник появится . . . Пытался разобраться в чем проблема, но так и не понял в чём дело. Ошибок никаких нет. Может подскажете что можно сделать?
@SimpleCodingChannel3 жыл бұрын
Может не поддерживается версия шейдеров, какая видеокарта? Система? Еще может просто ошибка в шейдере
@obtain4043 жыл бұрын
@@SimpleCodingChannel Видеокарта Radeon Vega 3 Ошибок в шейдере вроде нет, несколько раз проверил
@SimpleCodingChannel3 жыл бұрын
и драйвера стоят последние? а если склонировать проект с гитхаба, то же самое?
@obtain4043 жыл бұрын
@@SimpleCodingChannel Спасибо, всё заработало. Скопировал код из гит. В итоге нашел ошибку. На одну букву в шейдере ошибся. В следующий раз надо повнимательнее будет, а то стыдно как то даже...
@SimpleCodingChannel3 жыл бұрын
Ничего страшного, ошибки - это нормально, со всеми бывает)
@РоманГаевский-ь3е4 жыл бұрын
Всё классно, но у меня получился треугольник залитый чёрным цветом... Ошибок нет, предупреждений нет... Рыскаю по коду, но ни как не найду где ошибся.))) Автору спасибо!
@SimpleCodingChannel4 жыл бұрын
скорее всего ошибка где-то в шейдере.. Если что, то весь код выкладывается на гитхабе: github.com/simple-coding-channel/BattleCity
@РоманГаевский-ь3е4 жыл бұрын
@@SimpleCodingChannel Да, ошибка была в вертексном шейдере. Спасибо за помощь! (Не поставил решётку(#) перед версией... Все глаза сломал пока нашёл :) )
@adeptmonolith4 жыл бұрын
А я вот "vec 3" написал и тот же результат получил. Долго мучался, но коварный враг побежден)
@krypton113 жыл бұрын
у меня три(!) ошибки)) кто больше?
@pe4kin42 жыл бұрын
у меня тоже черный треугольник. Проверил свои шейдеры - все точь в точь как в коде из коммита "First triangle". Когда я вставил шейдеры с гитхаба (кроме vertex_shader и fragment_shader ничего не копипастил), все заработало...
@МихаилАтомович3 жыл бұрын
Выкидывает исключение, ошибка Missing GL version что делать?
@SimpleCodingChannel3 жыл бұрын
тут либо какая-то ошибка в коде, либо версия OpenGL не поддерживается видеокартой. Если второе, то нужно либо обновить драйвера либо еще может быть, что запускается встроенная видеокарта вместе дискретной
@МихаилАтомович3 жыл бұрын
@@SimpleCodingChannel через Begin и And триугольники рисует и у меня только дискретная карта gdx1070,ошибку кидает при инициализации GLEW
@SimpleCodingChannel3 жыл бұрын
а если запустить последнюю версию проекта с гитхаба, тоже не работает?
@igorbologov84523 жыл бұрын
Получился белый треугольник в верхнем правом углу, все сверил, написано идентично
@SimpleCodingChannel3 жыл бұрын
вот по этому коммиту можно проверить где ошибка: github.com/simple-coding-channel/BattleCity/commit/5cdb1b6e23365fffb573b4cd5282a02017c83469