Курс по компьютерной графике
- Пример должен собираться на компьютере преподавателя в Visual Studio 2022.
- Пример должен собираться без ошибок и предупреждений на 3 (а еще лучше, на 4) уровне warning-ов. В Debug/Release, Win32 и x64.
- Он должен быть самодостаточным. Для его использования не должна требоваться предварительная установка библиотек (отличных от устанавливающихся с visual studio). Сторонние библиотеки, если они нужны, должны поставляться одним из следующих способов:
a) Через встроенный в Visual Studio менеджер пакетов nuget. Это работает, например, с boost или WTL. Можно посмотреть как сделано в примере labs\01\samples\sample08_handling-wm_paint-wtl (репозиторий cg-course)
б) Через менеджер пакетов conan и систему сборки cmake. Для этого вам надо будет поколдовать. Возможно, я в выходные успею сделать пример. А возможно, нет.
в) Через git submodule (т.е. когда в какой-то из папочек вытягивается сторонний репозиторий на гитхабе)
г) Через копию библиотеки. Можно посмотреть пример labs\06\samples\01_simple_vertex_shader в репозитории cg-course. Там библиотека GLEW с необходимыми файлами содержится прямо в каталоге libs.
Вариант г) подходит для сравнительно небольших библиотек (не более 10 МБ). То есть boost таким образом затаскивать не надо (либо через nuget, либо через conan+cmake).
-
Портируемый пример на C++ желательно поместить в существующий solution в папке примеров к лабораторной, а не создавать для него новую подпапку с примером. Так их будет легче найти, и будет более эффективно использоваться место на диске, если для зависимостей используется nuget (каждый solution использует свой кэш)
-
Важно: Если пример требует для своей работы файлы изображений, шейдеров или иных ресурсов, нужно в Post Build Event прописать их копирование в $(OutDir) (или его подкаталог). Внимание, по умолчанию все EXE-файлы внутри Solution помещаются в одну папку назначения, поэтому ресурсы нескольких проектов тоже могут попасть в одну и ту же папку. Если в нескольких проектах есть файлы с одним и тем же именем, то при копировании может оказаться так, что файлы одного проекта перезапишут файлы другого, либо вызовут ошибку при параллельном копировании нескольких файлов. В этом случае нужно сделать что-то одно из:
а) Сложный вариант. Переименовать файлы ресурсов или шейдеров (не забыть внести соответствующие изменения и в код)
б) Простой вариант. Изменить выходную папку в настройках проектов, чтобы выходные файлы каждого проекта клались в разные папки. Output Directory для платформы Win32 установить равной $(SolutionDir)$(Configuration)\$(ProjectName)\
, а для x64 - $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\
. Обратная косая черта в конце обязательна. Посмотреть можно в примерах к 5 лабораторной работе (1, 2, 4 пример).
Важно: исходники в старых примерах имеют кодировку Windows-1251, поэтому тексты в них отображаются кракозябрами, если смотреть код на гитхабе. Пересохраните исходники в кодировке UTF-8 Without signature: