OpenGL #2 - первый треугольник

  Рет қаралды 13,662

SimpleCoding

SimpleCoding

Күн бұрын

Пікірлер: 68
@MultiKilimangaro
@MultiKilimangaro Жыл бұрын
Я прежде, так долго, никогда в жизни не рисовал треугольник :) 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
@ivanvostrilov1578 Жыл бұрын
Спасибо автору огромное! Всё получилось ! Советую ребятам сразу подумать об обработке ошибок, сильно ускоряет процесс разработки :)
@TopConductor
@TopConductor 3 жыл бұрын
Спасибо за урок. Тяжко конечно так было только из видео понять, очень много функций разных. Потратил много времени читая постороннюю литературу чтобы понять что к чему. Было бы неплохо если бы ты давал домашнее задание, например нарисовать 2 треугольника с разными цветами в этом примере.
@bogdns
@bogdns 3 жыл бұрын
Никогда так не радовался обычному треугольнику)
@SimpleCodingChannel
@SimpleCodingChannel 3 жыл бұрын
Это как hello world под OpenGL)
@rexstar1418
@rexstar1418 4 жыл бұрын
Как всегда, всё на высоте. Спасибо!
@ghazull8858
@ghazull8858 4 жыл бұрын
в целом всё здорово, но понятности вопроса шейдеров - нульпоинтер
@SimpleCodingChannel
@SimpleCodingChannel 4 жыл бұрын
я бы мог посоветовать поискать еще каких-нибудь книжек по шейдерам, чем больше источников информации, тем проще потом понять общую картину
@bridgebaby425
@bridgebaby425 6 ай бұрын
@@SimpleCodingChannel а вы не могли бы посоветовать книгу где подробно разъясняют про шейдеры. спасибо большое за такой труд. Видосы супер!
@original2062
@original2062 11 ай бұрын
А есть ли какие-то материалы по написанию шейдеров? И какими материалами пользовались вы для изучения?
@kpanat
@kpanat 11 ай бұрын
Есть конечно... По идее мы должны были создать 2 файла но мы всё впихнули в 2 строки. Это не оч хорошо, но можно...
@epickby9476
@epickby9476 4 жыл бұрын
получился белый треугольник ( glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5); единственная разница с кодом , так как на 6ке , окно не открывает , версию в шейдере менял , но цвет так и не появился , а вообще пока гуглил эту проблему , то наткнулся на шейдеры написанные на с++ и не понятно зачем было писать как в уроке ) спасибо за урок , было очень познавательно) ну и немного фидбека(хотя видео уже полгода и возможно вы уже это изменили ) очень напрягает отрисовка пробелов с помощью точек и иногда можно не заметить минуса или тд, зависит от качества видео , а в git это ещё сильнее проявляется)
@SimpleCodingChannel
@SimpleCodingChannel 4 жыл бұрын
Я изменил тему студии на темную, думаю, должно быть получше. Но я к точкам так привык, что без них мне уже как-то некомфортно)
@epickby9476
@epickby9476 4 жыл бұрын
@@SimpleCodingChannel понятно, ещё раз спасибо за курс)
@study_C_plus_plus_together
@study_C_plus_plus_together Жыл бұрын
Был черный треугольник, вместо цветного. Решение, исправление небольшой опечатки в описании "const char* fragment_shader =" а именно, я написал flag_color = vec4(color, 1.0); а должен был быть frag_color спасибо за урок, продолжаю вместе с Вами делать игру)
@makshekh8246
@makshekh8246 Жыл бұрын
это же название переменной, там может быть любое значение
@WhiskeyRomeoCocaCola
@WhiskeyRomeoCocaCola Жыл бұрын
в копилку возможных причин, написание gl_position вместо gl_Position в " gl_Position = vec4(vertex_position, 1.0);"
@kpanat
@kpanat 11 ай бұрын
Я до этого учил SFML. Но там вертексы не трансформируются. Хотя никто не мешает вручную делать аффинные преобразования...
@doctor_livsi_pod_phonk
@doctor_livsi_pod_phonk Жыл бұрын
Привет, незнаю ответишь ли ты) а можно ли менять вот эту строку с программой шейдером, вставив туда какую то переменную конкатенацией) я так на php и js делал, тут так прокатит или нет?)
@SimpleCodingChannel
@SimpleCodingChannel 5 жыл бұрын
прошу прощения за голос, весенняя аллергия...
@oculus1371
@oculus1371 5 жыл бұрын
Спасибо, отличный урок!
@kpanat
@kpanat 11 ай бұрын
По моему он точку с запятой пропустил после выходной переменной out. У меня не работало. Прсото ничего не рисовало. Я скачал файл с комита и начал сравнивать со своим... Потом недерминирование исправления и заработало. Почему не знаю. Программа была вроде бы правильная. И что я исправил не отследил. Но видимо была какая-то неточность. Скорей всего в шейдерах... Плохо то, что ошибку не отследишь. Эти функции ничего не возвращают исключений не генерят. И непонятно толи работают толи нет. А если не работают, то где и что не так? А хрен его знает... Но при этом не рисовали. А потом вдруг стали рисовать... всё в точности! Но почему???!!! Тоже неясно... ну ладно потом разберёмся...
@DarkStar-rq3cw
@DarkStar-rq3cw 5 ай бұрын
Да, так и есть, там "in vec3 color", а должно быть "in vec3 color;" (это кусок кода с 30-ой строки кода из коммита)
@kpanat
@kpanat 11 ай бұрын
Ну вобще мб и другая интерполяция. В данном случае используется линейная. Это довольно грубая... Она даёт ребристую структуру. Можно использовать квадратичную будет поглаже, но между треугольниками. Если мы хотим плавное сопряжение то надо кубическая. Только она даёт плавные переходы на стыках... И можно снизить уровень дискретности без искажений. Но я не знаю никого кто бы так делал. Хотя идея простая и стара как мир...
@original2062
@original2062 Жыл бұрын
Спасибо большое за видео! Очень полезно и информативно всем советую! У меня такой вопрос, почему при просмотре других людей по урокам OpenGL они используют какую-то другую библиотеку gl и у них строчки кода категорически отличаются от ваших. Например чтобы начать рисовать объект они пишут glBegin(то что хотят нарисовать ) и т.д.
@SimpleCodingChannel
@SimpleCodingChannel Жыл бұрын
Это еще старый OpenGL, до версии 3.2. Лучше с него не начинать, а сразу учиться на новом. Ну только если нет необходимости поддерживать старое железо
@original2062
@original2062 Жыл бұрын
@@SimpleCodingChannel ааааа, все теперь понятно. Большое спасибо!
@vasylpurskyi8008
@vasylpurskyi8008 3 жыл бұрын
Спасибо за урок
@РусланС-ж8л
@РусланС-ж8л 2 жыл бұрын
Здравствуйте! Подскажите где взять информацию о функциях библиотеки? Вы так хорошо рассказываете про каждую функцию и про ее аргументы. Но сколько бы я не гуглил не могу найти литературу ни на одну библиотеку.
@SimpleCodingChannel
@SimpleCodingChannel 2 жыл бұрын
По библиотекам практически не бывает литературы, это нужно смотреть документацию разработчиков или просто читать комментарии в коде и экспериментировать с примерами.
@РусланС-ж8л
@РусланС-ж8л 2 жыл бұрын
@@SimpleCodingChannel Как все сложно. Я самостоятельно взялся изучать программирование. Это как хобби. Дошел до библиотек, а тут засада, информации ни какой пойти нет. Буду пробовать изучать примеры. Спасибо за подсказку! Это тоже не маловажная информация. А вообще было бы очень классно если бы вы выпустили видео от том как вы изучаете новую библиотеку. Скажем так вам нужна какая-то функция, вы находите подходящую библиотеку, разбераете ее функционал и эксперементируете с кодом. Это позволит новичкам таким как я понять алгоритм действия при изучении. Этого очень как не хватает. Алгоритм изучения очень важен для любого ученика.
@SimpleCodingChannel
@SimpleCodingChannel 2 жыл бұрын
Хорошее и полезное хобби) спасибо ха фидбэк, буду стараться это тоже учитывать
@РусланС-ж8л
@РусланС-ж8л 2 жыл бұрын
@@SimpleCodingChannel не могу разобраться уже второй день. Треугольник рисует но он белый. Код перепроверил несколько раз. Возможно в верси opngl 3.1 эта функция пишется по другому или ее вообще нет в токой реализации? Но найти ничего не могу. Подскажите в чем может быть дело?
@SimpleCodingChannel
@SimpleCodingChannel 2 жыл бұрын
Для OpenGL 3.1 надо использовать другую версию glsl 1.40. Это надо в самом начале шейдера писать #version 140. Возможно что-то еще надо изменить, но я уже не подскажу, тут надо поискать в интернете рабочие примеры именно под эту версию.
@bogdns
@bogdns 3 жыл бұрын
Логика после pygame непривычна. В pygame каждый пиксель контролируешь без заморочек
@SimpleCodingChannel
@SimpleCodingChannel 3 жыл бұрын
Да. но внутри он тоже скорее всего использует старый добрый OpenGL. Самому писать графику без помощи библиотек конечно сложней
@denizeteo
@denizeteo Жыл бұрын
Помогите, при запуске программы выходит белый триугольник, даже с коммита кот скопировал все равно также. Подскажите, это проблема с ноутом? Заранее спасибо
@SimpleCodingChannel
@SimpleCodingChannel Жыл бұрын
Скорее всего видеокарта не поддерживает последнюю версию OpenGL, либо проблема с драйверами
@Ivan-lx5lw
@Ivan-lx5lw 4 жыл бұрын
Как решить проблему если видеокарта поддерживает лишь до версии 3.0 OpenGL? При запуске программы треугольник белый.
@SimpleCodingChannel
@SimpleCodingChannel 4 жыл бұрын
А какая у вас видеокарта? Может проблема в устаревшем драйвере?
@Ivan-lx5lw
@Ivan-lx5lw 4 жыл бұрын
@@SimpleCodingChannel проблема в устаревшем железе
@SimpleCodingChannel
@SimpleCodingChannel 4 жыл бұрын
Тогда только менять видеокарту..
@nami_gamedev
@nami_gamedev 3 жыл бұрын
нужно снизить версию шейдера в шейдерной программе
@ii4463
@ii4463 3 жыл бұрын
@@nami_gamedev Привет, та же ошибка - белый треугольник. Ставил версию шейдера #version 450 ( А версию GLFW как Major 4 Minor 5, ибо 4.6 у меня не работает). Рисует белый треугольник. Какую версию можно попробовать поставить?
@obtain404
@obtain404 3 жыл бұрын
Всё здорово, но вот у меня только белый треугольник появится . . . Пытался разобраться в чем проблема, но так и не понял в чём дело. Ошибок никаких нет. Может подскажете что можно сделать?
@SimpleCodingChannel
@SimpleCodingChannel 3 жыл бұрын
Может не поддерживается версия шейдеров, какая видеокарта? Система? Еще может просто ошибка в шейдере
@obtain404
@obtain404 3 жыл бұрын
@@SimpleCodingChannel Видеокарта Radeon Vega 3 Ошибок в шейдере вроде нет, несколько раз проверил
@SimpleCodingChannel
@SimpleCodingChannel 3 жыл бұрын
и драйвера стоят последние? а если склонировать проект с гитхаба, то же самое?
@obtain404
@obtain404 3 жыл бұрын
@@SimpleCodingChannel Спасибо, всё заработало. Скопировал код из гит. В итоге нашел ошибку. На одну букву в шейдере ошибся. В следующий раз надо повнимательнее будет, а то стыдно как то даже...
@SimpleCodingChannel
@SimpleCodingChannel 3 жыл бұрын
Ничего страшного, ошибки - это нормально, со всеми бывает)
@РоманГаевский-ь3е
@РоманГаевский-ь3е 4 жыл бұрын
Всё классно, но у меня получился треугольник залитый чёрным цветом... Ошибок нет, предупреждений нет... Рыскаю по коду, но ни как не найду где ошибся.))) Автору спасибо!
@SimpleCodingChannel
@SimpleCodingChannel 4 жыл бұрын
скорее всего ошибка где-то в шейдере.. Если что, то весь код выкладывается на гитхабе: github.com/simple-coding-channel/BattleCity
@РоманГаевский-ь3е
@РоманГаевский-ь3е 4 жыл бұрын
@@SimpleCodingChannel Да, ошибка была в вертексном шейдере. Спасибо за помощь! (Не поставил решётку(#) перед версией... Все глаза сломал пока нашёл :) )
@adeptmonolith
@adeptmonolith 4 жыл бұрын
А я вот "vec 3" написал и тот же результат получил. Долго мучался, но коварный враг побежден)
@krypton11
@krypton11 3 жыл бұрын
у меня три(!) ошибки)) кто больше?
@pe4kin4
@pe4kin4 2 жыл бұрын
у меня тоже черный треугольник. Проверил свои шейдеры - все точь в точь как в коде из коммита "First triangle". Когда я вставил шейдеры с гитхаба (кроме vertex_shader и fragment_shader ничего не копипастил), все заработало...
@МихаилАтомович
@МихаилАтомович 3 жыл бұрын
Выкидывает исключение, ошибка Missing GL version что делать?
@SimpleCodingChannel
@SimpleCodingChannel 3 жыл бұрын
тут либо какая-то ошибка в коде, либо версия OpenGL не поддерживается видеокартой. Если второе, то нужно либо обновить драйвера либо еще может быть, что запускается встроенная видеокарта вместе дискретной
@МихаилАтомович
@МихаилАтомович 3 жыл бұрын
@@SimpleCodingChannel через Begin и And триугольники рисует и у меня только дискретная карта gdx1070,ошибку кидает при инициализации GLEW
@SimpleCodingChannel
@SimpleCodingChannel 3 жыл бұрын
а если запустить последнюю версию проекта с гитхаба, тоже не работает?
@igorbologov8452
@igorbologov8452 3 жыл бұрын
Получился белый треугольник в верхнем правом углу, все сверил, написано идентично
@SimpleCodingChannel
@SimpleCodingChannel 3 жыл бұрын
вот по этому коммиту можно проверить где ошибка: github.com/simple-coding-channel/BattleCity/commit/5cdb1b6e23365fffb573b4cd5282a02017c83469
Ice Cream or Surprise Trip Around the World?
00:31
Hungry FAM
Рет қаралды 16 МЛН
Disrespect or Respect 💔❤️
00:27
Thiago Productions
Рет қаралды 38 МЛН
Haunted House 😰😨 LeoNata family #shorts
00:37
LeoNata Family
Рет қаралды 13 МЛН
Как Linux рисует окна?
48:46
Студенческие клубы разработки КНиИТ СГУ
Рет қаралды 58 М.
Что такое Flutter и Dart?
12:58
Merion Academy
Рет қаралды 15 М.
.Net 8.0 быстрее Framework 4.6
12:58
Alexey SuperAnt
Рет қаралды 1,2 М.
7  ПАРАДОКСОВ БЕСКОНЕЧНОСТИ
36:02
Mathin
Рет қаралды 888 М.
CI/CD - Простым языком на понятном примере
15:29
Артём Шумейко
Рет қаралды 106 М.
КАК УСТРОЕН TCP/IP?
31:32
Alek OS
Рет қаралды 213 М.
3D Game Engine | 27 | ImGui docking & viewports
21:10
SimpleCoding
Рет қаралды 2,3 М.
3D Game Engine | 29 | Управляем камерой
32:45
SimpleCoding
Рет қаралды 1,3 М.
Структура файлов и каталогов в Linux
20:28
Aleksey Samoilov
Рет қаралды 419 М.
Ice Cream or Surprise Trip Around the World?
00:31
Hungry FAM
Рет қаралды 16 МЛН