Урок №2. Подготовка к первому проекту OpenGL: настройка GLFW, CMake и GLAD

  Дмитрий Бушуев  | 

  Обновл. 7 Сен 2021  | 

 62545

 ǀ   48 

Первое, что нам нужно сделать, прежде чем мы начнем программировать графику — это создать контекст OpenGL и окно приложения для рисования. Однако данные операции являются специфичными для каждой операционной системы, поэтому OpenGL целенаправленно пытается абстрагироваться от них. Это означает, что мы самостоятельно должны создать окно, определить контекст и обрабатывать пользовательский ввод.

К счастью, существует довольно много библиотек, которые обеспечивают необходимый нам функционал, при этом некоторые из них специально нацелены на работу с OpenGL. Эти библиотеки избавят нас от всей специфической работы, связанной с особенностями конкретной операционной системы. Наиболее популярными библиотеками являются: GLUT, SDL, SFML и GLFW. На этих уроках мы будем использовать библиотеку GLFW. Вы также можете использовать и любую другую библиотеку из предоставленного списка, т.к. установка и настройка для большинства из них аналогична установке и настройке GLFW.

Библиотека GLFW

GLFW (англ. «Graphics Library FrameWork») — это библиотека, написанная на языке Си, специально предназначенная для работы с OpenGL. Библиотека GLFW предоставит нам все необходимые инструменты, которые потребуются для рендеринга на экран различных объектов. Благодаря этому мы сможем создавать контексты OpenGL, определять параметры окна и обрабатывать пользовательский ввод, что вполне коррелирует с нашими целями.

Основное внимание на этом и следующем уроках уделяется изучению библиотеки GLFW, созданию корректного контекста OpenGL, а также простого окна, в котором мы и будем рисовать наши объекты. На этом уроке мы пошагово рассмотрим установку библиотеки GLFW, а также процесс сборки и компиляции программы в связке с GLFW.

Примечание: На момент написания данной статьи в качестве среды разработки мы будем использовать Microsoft Visual Studio 2019 (обратите внимание, что наши действия будут аналогичными и с более старыми версиями Visual Studio). Если же вы используете более старую версию Visual Studio (или вообще другую среду разработки), то можете быть спокойны, т.к. процесс установки и настройки GLFW аналогичен в большинстве IDE.

Сборка GLFW


Библиотеку GLFW можно скачать с официального сайта. Стоит отметить, что GLFW уже имеет предварительно скомпилированные бинарные и заголовочные файлы для Visual Studio 2010-2019, но для полноты картины их мы использовать не будем, а вместо этого вручную скомпилируем GLFW из исходного кода. Это делается для того, чтобы вы сами прочувствовали процесс компиляции библиотек с открытым исходным кодом, поскольку не каждая подобная библиотека будет предоставлять возможность скачать предварительно скомпилированные бинарные файлы. Итак, давайте загрузим пакет с исходным кодом.

Примечание: Мы будем собирать все библиотеки в формате 64-битных бинарных файлов, поэтому убедитесь, что скачиваете и используете именно 64-битные бинарные файлы.

После загрузки пакета с файлами исходного кода извлеките и откройте его содержимое. Нас интересуют следующие вещи:

   библиотека, которая будет получена в результате компиляции;

   папка include.

Компиляция библиотек из исходного кода гарантирует, что полученная нами библиотека идеально подойдет для нашего процессора и операционной системы, в то время как предварительно скомпилированные бинарные файлы не всегда могут этим похвастаться (иногда они вообще недоступны для вашей системы). Однако проблема проектов, распространяющихся под эгидой открытого программного обеспечения, заключается в том, что не все используют одну и ту же IDE или систему сборки для разработки своего приложения, а это значит, что предоставленные файлы проекта/решения могут быть несовместимы с настройками IDE у других людей. Следовательно, каждый конечный пользователь должен настроить свой собственный проект/решение с учетом полученных *.с/*.cpp и *.h/*.hpp файлов, что почти всегда является довольно трудоемким и громоздким процессом. Но не спешите расстраиваться, для решения данной проблемы уже существует удобный инструмент сборки проектов под названием CMake.

CMake

CMake — это инструмент, который с использованием заранее определенных сценариев может из коллекции файлов исходного кода сгенерировать файлы проектов/решений под выбранную пользователем IDE (например, для Visual Studio, Code::Blocks или Eclipse). Он позволит нам из исходного пакета файлов GLFW создать файл проекта под среду разработки Visual Studio 2019, а затем данный файл мы сможем использовать для компиляции библиотеки. Но сначала нам нужно его скачать, а затем установить.

После установки CMake у вас будет 2 варианта:

   запустить CMake из командной строки;

   запустить CMake через графический интерфейс.

Поскольку мы не стремимся всё усложнять, то остановимся на варианте с использованием графического интерфейса. Для работы с CMake нам потребуется указать папку с файлами исходного кода проекта (в нашем случае glfw-3.3.2) и папку назначения для бинарных файлов. Для папки исходного кода мы собираемся выбрать корневую папку загруженного исходного пакета GLFW, а для папки сборки мы создадим новый каталог build:

После того, как мы прописали пути для исходной и целевой папок, нам нужно нажать кнопку Configure, чтобы CMake смог просмотреть исходные файлы GLFW и выбрать необходимые параметры для сборки.

В следующем окне необходимо задать используемую версию Visual Studio. Т.к. работать мы будем в Visual Studio 2019, то выбираем опцию "Visual Studio 16 2019":

Далее CMake отобразит возможные варианты сборки библиотеки. Можно оставить значения по умолчанию и снова нажать кнопку Configure, чтобы сохранить настройки:


После установки параметров мы нажимаем кнопку "Generate", в результате чего в папке build будут созданы необходимые файлы проекта.

Компиляция проекта


Теперь, зайдя в папку build, среди всего прочего можно увидеть файл с именем GLFW.sln, открываем его с помощью Visual Studio 2019:

Поскольку CMake сгенерировал файл проекта, который уже содержит соответствующие параметры конфигурации, нам остается лишь реализовать решение. При этом CMake должен был автоматически настроить вариант компилирования решения в виде 64-битной библиотеки. Благодаря этому мы получим скомпилированный файл библиотеки с именем glfw3.lib, который будет находиться в папке build/src/Debug.

После того, как мы создали библиотеку, нужно убедиться, что IDE знает, где найти данный файл, а также другие подключаемые файлы нашей программы OpenGL. Решить этот вопрос можно двумя способами:

   Способ №1: Можно скопировать содержимое папки include проекта GLFW в соответствующую папку include вашей IDE или компилятора, а также скопировать полученный файл glfw3.lib в соответствующую папку /lib вашей IDE или компилятора. Данный способ вполне рабочий, но мы его не рекомендуем, так как новая установка IDE или компилятора приведет к тому, что вам заново придется подключать необходимые файлы.

   Способ №2: Вы можете создать новую папку, которая будет содержать все заголовочные файлы и файлы из сторонних библиотек. На эту папку вы впоследствии сможете ссылаться из своей IDE или компилятора. Например, можно создать папку, в которой будут находиться папки Lib и Include. В них мы будем хранить все наши библиотечные и подключаемые файлы, которые собираемся использовать для наших OpenGL-проектов. Получается, что все сторонние библиотеки будут организованы в одном месте (и их можно будет совместно использовать на нескольких компьютерах). Однако, каждый раз при создании нового проекта, мы должны будем указывать IDE соответствующие пути к этим папкам.

Как только необходимые файлы будут сохранены в выбранном вами месте, мы сможем приступить к созданию нашего первого OpenGL-GLFW-проекта.

Наш первый проект

Для начала давайте откроем Visual Studio и создадим новый проект. Для этого нужно выбрать тип проекта "C++", а далее — "Пустой проект" (не забудьте дать проекту подходящее имя):

Теперь у нас есть рабочее пространство для создания нашего самого первого OpenGL-приложения!

Линкинг проекта


Для того, чтобы наш проект мог использовать GLFW, нам нужно связать с ним полученную библиотеку. Это можно сделать, указав в настройках линкера, что мы хотим использовать библиотеку glfw3.lib, но проект пока не знает где её искать, т.к. все подобные файлы мы переместили в другую папку. Таким образом, сначала мы должны добавить эту папку в наш проект.

Для этого нажмите правой кнопкой мышки на имя проекта в "Обозреватель Решений" > "Свойства". В появившемся окне выберите "Каталоги VC++" > "Каталоги библиотек":

Здесь вы можете добавить свои собственные каталоги, чтобы проект знал, где искать необходимые файлы. Это можно сделать, вставив вручную путь до каталога или щелкнув по соответствующей строке и выбрав пункт <Изменить…>, в результате чего откроется следующее окно:

Здесь вы можете добавить столько дополнительных каталогов, сколько захотите, и с этого момента IDE при поиске файлов библиотек также будет просматривать и эти директории. Поэтому, как только вы подключите папку Lib из проекта GLFW, вы сможете использовать все файлы библиотек из этой папки. Аналогично обстоят дела и с добавлением папки Include для заголовочных файлов.

Поскольку для VS были указаны все необходимые файлы, то мы, наконец, можем связать GLFW с нашим проектом, перейдя в раздел "Компоновщик" > "Ввод":

Чтобы связать библиотеку, нам нужно указать для компоновщика её имя. Так как библиотека называется glfw3.lib, то мы добавляем название этого файла в раздел "Дополнительные зависимости" (вручную или же через пункт <Изменить…>), и с этого момента при запуске процесса компиляции GLFW будет связан с нашим проектом. В дополнение к GLFW мы также должны добавить ссылки на библиотеку OpenGL, но данные действия будут отличаться, в зависимости от (вашей) используемой операционной системы:

   Библиотека OpenGL в Windows. Если вы используете операционную систему Windows, то необходимый нам файл библиотеки OpenGL32.Lib, входящий в пакет Microsoft SDK, уже есть в составе Visual Studio и не требует отдельной установки. Поскольку мы используем компилятор VS и работаем в операционной системе Windows, то всё, что вам нужно сделать — это добавить название файла OpenGL32.Lib к общему списку параметров компоновщика.

Примечание: В примечании подраздела «Сборка GLFW» сказано, что мы собираем все библиотеки в формате 64-битных бинарных файлов. В то же время число «32» в названии файла OpenGL32.Lib может вызвать некоторую путаницу, как бы намекая на то, что в данном случае используется именно 32-битная версия библиотеки. На самом деле это не так. Если у вас установлен пакет Microsoft SDK, то достаточно просто зайти в папку C:\Program Files (x86)\Windows Kits\10\Lib\[Номер_версии_SDK]\um\x64\ и убедиться, что в ней среди прочих файлов находится и наша библиотека:

Больше того, если зайти в папку C:\Program Files (x86)\Windows Kits\10\Lib\[Номер_версии_SDK]\um\x86\, то и там можно встретить файл OpenGL32.Lib:

Другими словами, под одним названием файла OpenGL32.Lib существует две различные версии (32-битная и 64-битная) библиотеки. Поэтому просто не обращайте внимание на то, что в её имени есть часть «32». Всё прекрасно работает и в 64-битном окружении.

   Библиотека OpenGL в Linux. Если вы работаете в операционной системе Linux, то вам нужно подключить библиотеку libGL.so с помощью ключей –lGL, добавляемых к параметрам вашего компоновщика. Если вы не можете найти данную библиотеку, то вам, вероятно, необходимо установить любой из пакетов: Mesa, NVidia или AMD dev.

Затем, после добавления библиотек GLFW и OpenGL в настройки компоновщика, вы сможете подключить заголовочные файлы GLFW следующей строкой кода:

Примечание: Для пользователей Linux, использующих компилятор GCC, скомпилировать проект помогут следующие параметры командной строки:

-lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi -ldl

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

На этом установка и настройка GLFW завершена.

GLAD

Поскольку OpenGL на самом деле является лишь стандартом/спецификацией, то производитель драйверов должен реализовать спецификацию для драйвера, поддерживаемого конкретной видеокартой. Из-за того, что существует множество различных версий драйверов OpenGL, расположение большинства OpenGL-функций во время компиляции не известно и должно быть запрошено во время выполнения программы. Задача разработчика состоит в том, чтобы получить расположение нужных ему функций и сохранить их в виде указателей на функции для последующего использования. Получение мест расположений этих функций зависит от конкретной операционной системы.

В Windows это выглядит примерно следующим образом:

Как вы наверняка могли заметить, данный код выглядит несколько сложным, к тому же разработчикам придется каждый раз проходить через этот громоздкий процесс, совершая данные действия для каждой функции, которая может понадобиться и которая еще не была объявлена. К счастью, есть решение — библиотека GLAD.

Установка GLAD

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

Перейдите в веб-сервис GLAD, убедитесь, что в поле «Language» выбран язык "C/C++", и в разделе «API» выберите версию OpenGL — 3.3 (именно её мы и будем использовать; хотя более новые версии также подойдут). Кроме того, убедитесь, что в поле «Profile» установлено "Core":

Также параметр "Generate a loader" должен быть отмечен галочкой. Пункт «Extensions» мы пока пропустим, остается нажать кнопку "Generate", чтобы создать нужные нам файлы библиотеки:

К этому моменту GLAD предоставит вам возможность скачать zip-архив, содержащий в себе две подключаемые папки и файл glad.c. Вам нужно скопировать обе эти папки (glad и KHR) в свою папку с подключаемыми файлами (или добавьте дополнительный элемент, указывающий на эти папки в свойствах проекта), а также добавить файл glad.c в свой проект.

После выполнения этих шагов вы сможете использовать следующую директиву include:

Теперь, при попытке скомпилировать проект, у вас не должно возникать никаких ошибок.

На следующем уроке мы рассмотрим использование GLFW, настройку контекста OpenGL и создание окна. Обязательно убедитесь, что все ваши include- и library- каталоги являются корректными, и что имена библиотек в настройках компоновщика соответствуют указанным библиотекам.

Дополнительные ресурсы

   GLFW: Window Guide — официальное руководство GLFW по настройке и конфигурации окна GLFW.

   Создание приложений — предоставляет отличную информацию о процессе компиляции/линкинга вашего приложения и большой список возможных ошибок (+ решения), которые могут возникнуть.

   GLFW с Code::Blocks — рассказывает об использовании GLFW с Code::Blocks.

   Использование CMake — краткий обзор того, как запустить CMake в Windows и в Linux.

   Polytonic/Glitter — простой шаблонный проект, который предварительно настроен со всеми соответствующими библиотеками; отлично подойдет, если вам нужен пример того, что можно сделать при помощи OpenGL, без необходимости компилировать все библиотеки самостоятельно.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (67 оценок, среднее: 4,61 из 5)
Загрузка...

Комментариев: 48

  1. Даниил:

    В общем, если у кого-то возникнет ошибка:

    LNK2019 ссылка на неразрешенный внешний символ main в функции "int __cdecl invoke_main(void)" (?invoke_main@@YKMNA)

    Просто знайте, что вы создавали пустой проект C++  и точка входа в нём не указана. Следовательно, для решения проблемы достаточно добавить функцию int main()

  2. Сергей:

    Товарищи, а не подскажите, куда необходимо вставлять файл glad.c? В корневой каталог проекта или куда-то ещё?

    1. Вася:

      Рядышком с main.cpp

  3. Вадим:

    Ошибка LNK1107 недопустимый или поврежденный файл: не удается прочитать по 0xEB67
    Мб кто-то с таким сталкивался?

  4. Антон:

    fatal error LNK1104: не удается открыть файл "glfw3.lib OpenGL32.lib"
    Делал все так, как описано в статье. В чем может быть проблема?

  5. dimas:

    Возникает ошибка в CMake
    CMake Error: The source directory "D://glfw-3.3.4/glfw-3.3.4" does not exist.
    Как ее решить?

    1. Виктор:

      Когда вы скачивали сборку GLFW, то вероятнее всего скачали по кнопке 64-bit Windows binaries, когда необходимо было скачать по кнопке Source package.

  6. Ололоша:

    Если кто-то также как я не может добавить include с GLFW\glfw3.h, то в свойствах проекта надо зайти в C/C++ -> Общие -> Дополнительные каталоги включаемых файлов, и добавить туда путь до вашей папки include

  7. Александр:

    Делал всё по инструкции но, при попытке запустить программу появляется ошибка что файл OpenGL.exe не найден. С чем это может быть связано?

  8. никита:

    Возникли проблемы с конфигурацией CMAKE

    (CMake Error: The source directory "C:/glfw" does not appear to contain CMakeLists.txt.
    Specify —help for usage, or press the help button on the CMake GUI.)

    Помогите пожалуйста

    1. Иван:

      Когда вы скачивали сборку GLFW, то вероятнее всего скачали по кнопке 64-bit Windows binaries, когда необходимо было скачать по кнопке Source package.

  9. Дмитрий:

    Всё сделал по инструкции, всё работает, но после того, как я вставляю код из документации GLFW появляются ошибки:
    LNK2001 неразрешенный внешний символ glad_glClear.
    LNK1120 неразрешенных внешних элементов: 1

  10. Иван:

    Здравствуйте, в этой статье есть следующий фрагмент:

    "Примечание: Для пользователей Linux, использующих компилятор GCC, скомпилировать проект помогут следующие параметры командной строки:

    -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi –ldl

    Неправильное линкование соответствующих библиотек приведет к возникновению ошибок.".

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

    1. Фото аватара Юрий:

      Спасибо за замечание, исправил)

  11. Мария:

    Добрый день! Все сделала по вашей инструкции. Но проблема возникла в файле opengl32.lib. Установила SDK из Visual Studio Installer, но этого файла там нет. Где можно его найти?

  12. Анатолий:

    Я потратил несколько вечеров в попытках запустить пример с кодом с сайта GLFM, поэтому оставлю здесь решение тех проблем, с которыми я столкнулся.

    Во-первых, при указании расположения включаемых файлов стоит обратить внимание на конфигурацию, то есть указывая путь для конфигурации release win 32, а запуская debug x64 ничего работать не будет.

    Во-вторых, библиотеки opengl32.lib в ходящей в пакет SDK у меня не оказалось. Решил я эту проблему переустановкой пакета SDK, через установщик visual studio.

    И в-третьих, не совсем проблема, но то, что меня смутило, первый запуск примера с кодом сопровождался скачиванием внешних символов, растянувшееся на добрые полчаса (при моем не самом слабом железе), так что я почти уверовал в поломку программы, к счастью закончилось все успешно, и я получил долгожданное окошечко Hello world.
    Надеюсь это кому-нибудь поможет.

    (я бы прикрепил скрины, но как это сделать не разобрался)

    1. Егор:

      АНАТОЛИЙ!!! СПАСИБО ВАМ ОГРОМНОЕ!!!
      ВЫ МЕНЯ СПАСЛИ!!!

    2. Вадим:

      Вы тут говорите про скачивание внешних символов при первом запуске. А можете подсказать как это сделать?
      У меня при первом запуске выдает ошибку неразрешенные внешние символы.

  13. Алексей:

    Здравствуйте. Возникли ошибки при конечном запуске программы. Вот сами ошибки:
    1)Ошибка LNK2019 ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
    2)Предупреждение LNK4272 тип компьютера библиотеки "x64" конфликтует с типом целевого компьютера "x86"
    3)Серьезность Код Описание Проект Файл Строка Состояние подавления
    Ошибка LNK1120 неразрешенных внешних элементов: 1

    Подскажите, что делать?
    Папки glad, KHR, GLFW у меня лежат в папке include, которую я подключил в "Включаемые каталоги".
    Библиотеку glfw3.lib я положил в папку Lib (путь такой-жа как и у include)
    Файл glad.c я положил по видео в ютубе в "файлы ресурсов"

    Уже не знаю, что делать

    1. Алексей:

      Вроде решил проблему. Ну не знаю, точно или нет, так как эта ошибка осталась, но при пробном запуске кода (он есть на сайте GLFW в разделе документация) у меня стало запускаться окно, хотя до этого такого не было. Вся проблема была в том, что я в свойствах проекта не установил разрядность системы x68 (по умолчанию стоит x86). Потом в самом проекте я установил вверху разрядность x64. Ошибка исчезла (но только при запуске пробного кода). Если убрать код, то она продолжает выскакивать. Я так посмотрел, и вроде она связана с тем, что нет функции main. Наверно поэтому ошибка и исчезает при запуске кода, так как там эта функция присутствует (а может потому, что я сам файл с кодом назвал main). В общем у меня нет опыта, чтоб понять причину. Но хотелось бы чтоб во всех случаях не вылезала ошибка. Если кто знает, объясните)

      1. Фото аватара Дмитрий Бушуев:

        >Я так посмотрел, и вроде она связана с тем, что нет функции main. Наверно поэтому ошибка и исчезает при запуске кода, так как там эта функция присутствует.

        Так и есть. И тут дело уже в самом языке C++: ну не любит компилятор, когда нет функции main(), для него она служит точкой входа. 🙂
        "Каждая программа, написанная на языке C++, должна содержать главную функцию main(). Именно с первого стейтмента, находящегося в функции main(), и начинается выполнение всей программы. "
        https://ravesli.com/urok-8-struktura-programm-s/#toc-2

        >Но хотелось бы чтоб во всех случаях не вылезала ошибка. Если кто знает, объясните)
        Так не получится. Без функции main() вы всегда будете получать ошибку.

        1. Алексей:

          Тогда спасибо)

  14. Accellinker:

    У меня возникло много трудностей при подключении всех библиотек, используя эту статью.
    Для всех, у кого не получилось посмотрите это видео: https://www.youtube.com/watch?v=kGupc_M5o10
    Здесь все показывается. У меня решились проблемы.

    А автору спасибо за серию статей. Очень мало годных статей на тему OpenGL в интернете.

    1. Фото аватара Дмитрий Бушуев:

      >>У меня возникло много трудностей при подключении всех библиотек

      Например?
      P.S.: Я сам несколько раз подключал с нуля все библиотеки по изложенным в статье шагам. Никаких проблем не было…

      1. Accellinker:

        Извиняюсь, мой недочет.
        Большинство ошибок были из-за моей невнимательности. Единственное, файл opengl32.lib в visual studio 2019 я так и не нашел. Но это решилось установкой SDK. Также CMake не находил студию 2017, однако это было решено переустановкой по другому пути.

        1. Фото аватара Дмитрий Бушуев:

          Рад, что всё получилось 🙂

      2. Алексей:

        Простите а папка Include подключается в каталоги библиотек вместе с Lib?И где находится общий список параметров компановщика для opengl32.lib?

        1. Фото аватара Дмитрий Бушуев:

          >>Простите а папка Include подключается в каталоги библиотек вместе с Lib?
          Попробуйте сделать так, как указано на картинке из статьи. На всякий случай ниже будет ссылка на неё 🙂
          https://ravesli.com/wp-content/uploads/2020/04/6.png

          >>И где находится общий список параметров компановщика для opengl32.lib?

          В этой статье, начиная со слов:
          "Поскольку для VS были указаны все необходимые файлы, то мы, наконец, можем связать GLFW с нашим проектом, перейдя в раздел "Компоновщик" > "Ввод":"

          …и ниже скриншот:
          https://ravesli.com/wp-content/uploads/2020/04/8.png

  15. Вадим:

    Здравствуйте, я сделал установку GLFW по вашей инструкции способом #2, Visual Studio не видит файл. Даже все директории переименовал как у вас. Всё равно. Тем не менее включая в папку Include glfw3.h все ошибки пропали. Это не критично?

    Чтобы убедиться: путь до директории include Visual Studio 2019: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\VS\include?

    1. Фото аватара Дмитрий Бушуев:

      Нет, абсолютно не критично.

      P.S.: Попробуйте открыть свой проект, далее в верхнем меню выбрать Проект->Свойства->Свойства конфигурации-> С/С++ -> Общие — > (справа)Дополнительные каталоги включаемых файлов, добавить путь к вашей папки с заголовочными файлами. На всякий случай вот для наглядности ссылка на картинку:
      https://ibb.co/d4T91dw

      1. Вадим:

        Здравствуйте! Уже 12 дней я пытался настроить GLFW и GLAD (Visual Studio не тянет прям никак) и пришёл к тому что в Code::Blocks проект собирается но только при изменении glad.h, glad.c, и собственно кода чтобы они все включали файлы по абсолютному пути. Это немного неудобно, как указать например относительный путь в моём коде к glfw.h который находится в папке проекта\include?

  16. Юрий:

    Доброго времени суток. Сделал установку по вашей инструкции. Возникла проблема со следующим сообщением в активной строке:

    Программа "[11520] 0у.exe" завершилась с кодом -1073741515 (0xc0000135) 'Зависимый DLL-файл не найден'.

    В выплывающем окне следующий текст:
    "Не удается продолжить выполнение кода, поскольку система не обнаружила glfw3.dll. Для устранения этой ошибки попробуйте переустановить программу.

    Подскажите, пожалуйста, как пофиксить

    1. SR000:

      Закинь в папку со своим 0у.exe файл glfw3.dll. Если ты не скомпилировал из исходников, то по ссылке на сайт GLFW скачай скомпилированную версию, согласно своей ОС. Этот файл будет в архиве.

    2. Фото аватара Дмитрий Бушуев:

      Опишите подробнее, где конкретно появляется данная ошибка.

  17. Иван Сотников:

    Записал, что не получилось (и как устанавливал):
    https://youtu.be/mt_zGXXA4yw

    1. Фото аватара Дмитрий Бушуев:

      Добрый день.
      Посмотрел ваше видео. На днях я написал дополнение к данному уроку, в котором описал установку и настройку проекта с использованием CodeBlocks в Linux. Статья уже отправлена на рассмотрение Администратору и в ближайшее время она будет опубликована на сайте 🙂

      1. Иван Сотников:

        Понял. Спасибо.

  18. Арбузик❤❤❤:

    Жду с нетерпением следующий урок

    1. Фото аватара Дмитрий Бушуев:

      Обязательно будут. 🙂

  19. Кирилл:

    Здравствуйте, у меня возникла проблема при компиляции.
    В файле glad.h пишет: "директива #error: OpenGL header already included, remove this include, glad already provides it". Подскажите, пожалуйста, что делать?

    1. Фото аватара Дмитрий Бушуев:

      На каком этапе урока происходит данная ошибка?

      1. Кирилл:

        На последнем этапе, когда пытаюсь подключить GLAD.

        1. Фото аватара Дмитрий Бушуев:

          Можете выложить скриншот вашего кода с ошибкой компилятора?

      2. Кирилл:

        Я нашел в интернете как решить эту проблему. Сначала надо подключить GLAD, а только потом GLFW. Надо только было лучше погуглить

    2. mikasey:

      просто поставь инклюд glad.h перед glfw.h, ошибка происходит потому что второй отчасти зависит от первого, и если объявить его раньше то Glad будет ругаться. и вообще лучше объявляй его самым первым, потому что он и на другие библиотечные хэдеры может ругатьсяю

  20. Иван Сотников:

    Напишите, как установить на Debian 10 для Code::Blocks (или другой IDE).
    После нажатия на Configure выдал ошибку Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) . И нет папки build/src/Debug и файла glfw3.lib (искал по всему диску командой
    find / -iname "*glfw3*"
    , нету нигде.
    Не могу, в общем, разобраться.

    1. Фото аватара Дмитрий Бушуев:

      >>После нажатия на Configure выдал ошибку Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)

      Добрый день.
      Самый простой способ решить проблему — это снять отметку с пункта GLFW_BUILD_DOCS (см. скриншот №3) и снова нажать Configure.

    2. Edmon:

      Привет! У меня та же проблема была. Короче, фишка в том, что надо сперва собрать решение glfw.sln . После этого появится папка Debug, а в ней уже glfw3.lib

Добавить комментарий для Дмитрий Бушуев Отменить ответ

Ваш E-mail не будет опубликован. Обязательные поля помечены *