Opengl не работает в visual studio
I am trying to setup visual studio code for opengl development. I already have it working for plain c/c++ development I am now trying to add in opengl development to the mix. I know how to setup opengl on other platforms (i.e. Eclipse, Xcode, Visual Studio, CodeBlocks). The root of my problem is more how to setup dependencies in visual studio code. My best guess would be running a task in the task.json file. Right now it is just filled with the code to compile the project every time I run the program.
Have you considered to use CMake or similar to make life a bit easier? I personally like CMake and that makes it super easy to make it work with vscode and/or what ever other editor that might be needed later on.
@Matthew I would suggest starting with derekmolloy.ie/hello-world-introductions-to-cmake for CMake only, and you can look at stackoverflow.com/questions/30269449/… and to hook up CMake into the build from VSCode you can for example look at stackoverflow.com/questions/30269449/… - Search for "If your project has a CMake configuration it's pretty straight forward to setup VSCode" to see a concrete example.
3 Answers 3
- How to setup the launch.json and tasks.json files?
- Start with the official VSCode documentation on C++ programming with VSCode explains how to setup and run tasks in greater detail.
- What commands to use to compile the code?
- This is where it gets tricky. Compilation depends on the OS and environment. The part below mostly focuses on that:
The main issue for me was that I am on MAC and many explanations were only targeted at Linux and Windows (which don't have the framework parameter) or they explain how to set it all up in the Xcode GUI.
- Fix your include file names
- Not everything is in (e.g. Mac has for part of it, and for glut files)
- In order to run, add framework to your build arguments (to include external libraries), e.g.
- gcc -o ex1 ex1.c -framework GLUT -framework OpenGL -Wno-deprecated
- cc -framework GLUT -framework OpenGL
- Don't forget: Add those frameworks to your C/C++ extension settings and/or tasks.json as well
(and again: it would be very similar when using clang or clang++ )
Integrate that insight with the official documentation on C/C++ tasks , and it's all done! :)
More Details
The above is just a shorter version of my overall journey, detailed below:
- I also started with the official VSCode instructions on C++ programming with VSCode (which you also mentioned).
- Then I followed their link at the bottom: Using Clang in Visual Studio Code (the GCC setup is very similar).
- Followed this Github Gist on the differences between Mac and non-Mac OpenGl compilation. There are two major differences:
- The APPLE paths are slightly different; not everything is in (e.g. for core files and for glut files).
- You have to add OpenGL and other libraries via the framework flag.
- Add those frameworks to your C/C++ extension settings as well
- (When just getting started, you might want to cut down on the deprecation warnings; as OpenGL went through major changes in the past decade, using -Wno-deprecated )
The VSCode setup is mostly the same. Make sure that, once you have setup the C/C++ extension correctly, to look at the documentation for your environment, which are at the bottom of the official "C/C++ for Visual Studio Code" documentation page.
However, the bigger problem is usually how to get it to compile. I don't have recent examples or experiences of compiling on non-MAC systems; but here are some relevant references:
I also found an example by someone taking a jab at OpenGl cross-platform compilation using VSCode here. You might want to check out their entire .vscode/ folder (if not their entire project setup).
These days, it's very easy to add any amount of Launch (Run and/or Debug) configurations to the built-in Launch + Debugger UI by following these instructions.
[Deprecated] VSCode "Code Runner" Extension
Before the debugger UI was a thing (or at least before I noticed it), you could install the Code Runner extension, you will get a neat little "Run Code" button at the top right (or Command+Alt+N ).
This works fine if you just want to use it to run a single executable. If you want to run individual files individually, it gets a bit harder. I have not tried it, but as they suggest, for that, you could use a special file naming pattern, i.e. a glob pattern (e.g. *.gl.cpp ) and use the code-runner.executorMapByGlob setting to have different compile+run parameters based on file names.
Приносим извинения. Запрошенное содержимое было удалено. Вы будете автоматически перенаправлены через 1 секунду.
Лучший отвечающий
Вопрос
Здравствуйте. Необходимо подключить opengl к студии но длительное изучение различных материалов по этой теме результата не дало- opengl как не был подключен так и остался. Подскажите как правильно всё это сделать и наконец приступить к работе.
Ответы
Итак, работать с OpenGL проще и много примеров с использованием библиотеки GLUT, поэтому ее и загружаем в первую очередь - нам нужны бинарники, собранные под Win32 - загружаем их отсюда, файл glut-3.7.6-bin.zip (117 KB)
После распаковываем, и можно скопировать папку к папке проекта. Далее остается настроить свойства проекта, для этого заходим в меню Project - Properties. Заходим в раздел C/C++, находим пункт Additional Include Directories - это дополнительные папки, в которых Visual Studio будет искать заголовочные файлы (.h). Добавляем в список директорию, в которой лежит glut.h
Затем переходим в раздел Linker и там также добавляем дополнительные директории для поиска lib файлов (указываем путь до папки с glut32.lib)
Теперь нужно еще указать, что необходимо линковать саму библиотеку glut32.lib. Это делается в разделе Linker - Input, Additional Dependencies. В нем просто указываем имя либ-файла glut32.lib.
На этом настройки закончены и можно приступать к примеру (взято отсюда):
Проект должен удачно скомпилироваться. Для запуска требуется еще скопировать glut32.dll в папку с exe. При запуске на экране будет одно консольное окно и одно OpenGl окно салатового цвета.
После этого рекомендую попробовать проделать тоже самое, но с библиотекой freeglut, т.к. она является намного новее той, что я привел выше. Вам нужно загрузить ее, потом распаковать архив, перейти в директорию \freeglut-2.8.0\freeglut-2.8.0\VisualStudio\2010, откуда запустить файл проекта, обновить до версии 2012 и собрать проект в Release сборке или Debug.
После сборки проекта у вас lib файл и dll будет доступен в \freeglut-2.8.0\lib\x86\Debug. А h-файл в \freeglut-2.8.0\include.
1. Откройте программу установки Visual Studio, чтобы изменить:
2. Нажмите, чтобы изменить:
3. Проверьте настольную разработку на C ++:
4. Проверьте диспетчер пакетов NuGet:Во-вторых, настройте OpenGL
После загрузки и распаковки сжатого пакета есть следующие файлы:
Просто поместите файл в соответствующую папку:
①Поместите glut.h в C: \ Program Files (x86) \ Microsoft Visual Studio \ community \ VC \ Tools \ MSVC \ 14.24.28314 \ include \ gl
②Поместите glut.lib и glut32.lib в . \ Microsoft VisualStudio \ community \ VC \ Tools \ MSVC \ 14.24.28314 \ lib \ x86
③ Поместите glut.dll и glut32.dll в C: \ Windows \ SysWOW64Примечание:
① Если папки gl нет, создайте новую
②Windows 64-битная, просто выполните описанную выше операцию, если она 32-битная, поместите glut.dll и glut32.dll в C: \ Windows \ System323. Новый проект OpenGL
1. Откройте Visual Studio2019 и выберите создание нового проекта:
2. Выберите Мастер рабочего стола Windows:
3. Проверьте пустой проект:
4. Выберите «Инструменты-NuGet Package Management-NuGet Packages for Management Solutions» и найдите «nupengl» в браузере.
5. Должны быть установлены и nupengl.core, и nupengl.core.redist:
Он был успешно настроен, и затем вы можете создать новый файл .cpp для тестирования кода в только что созданном проекте.Подключение OpenGL к библиотеке Visual Studio 2019
Подключение Qt в Visual Studio 2019
Пытаюсь подключить Qt в Visual Studio. Скачал Qt, установил Qt Tools для VS, указал путь к хедерам.Подключение библиотеки Visual Studio 2019
Здравстуйте. Я новичок, не могу разобраться. Скачал библиотеку BearLibTerminal. Имею файлы.Подключение SQLite к с++ Visual Studio 2019
Здраствуйте, я скачал, распаковал, переместил файлы в папку C:/sqlite и 64 битную версию.Visual Studio 2019, подключение библиотек
Добрый день! Я начинающий программист, учу c++, заинтересовался библиотекой sfml, но ни как не.Как отключить автоматическое подключение библиотек в Visual Studio 2019
На просторах интернета нашёл, что за это отвечает ReSharper, и что он находиться в.Подключение SQL Server 2019 к Visual studio. Выдает ошибку. WPF Project
В чем проблема? не удается подключиться к базе. С заменой имени ПК пробовал тоже.Подключение OpenGL к Visual Studio
Не могу второй день разобраться, перепробовал уже три гайда из гугла и один видео-гайд, пробовал.Подключение OpenGL в Microsoft Visual Studio
Здравствуйте, хочу написать простую игру на с++ с использованием графической библиотеки OpenGL. Но.Подключение OpenGL к проекту на С++ (Visual Studio)
Доброго времени суток! Никак не могу понять, как подключать библиотеку OpenGL к своему проекту.Подключение OpenGL GLUT к Visual Studio 2013
начал изучать OpenGL, скачал библиотеки, но библиотека GLUT не работает, пробовал разные способы из.1. First download the OpenGL library file
2. Place the file classification to the specified folder
Find a directory \ Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\GL。
Put glut.h in it.Include directory generally does not have a GL folder, requiring new one. The author’s VS is installed under the C: \ Program Files (x86) directory, and the following figure takes this as an example.
14.24.28314 Version number will vary from versionFind a directory \ Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\lib\x86
Put glut.lib, glut32.lib inside.- The method is the same, the reference directory is shown
Find the directory C: \ windows \ syswow64 put glut.dll and glut32.dll inside.
If it is a 32-bit system, put two folders into the C: \ Windows \ System32 directory
3. Create a console application
- Delete the original content in the .cpp file, copy the test code below to the file
- Open Project> Manage NuGet Package
Search Nupengl in the left browsing section, two, install them (these two should be the same, install one, the other is also installed)
Open Graphics Library is a cross-language, cross-platform application programming interface for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit, to achieve hardware-accelerated rendering.
To execute your graphics applications written using OpenGL libraries, you can use Visual Studio.
Microsoft Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs, as well as websites, web apps, web services and mobile apps.
Install Visual Studio Community 2017 using the official installer with the required components as shown in the image below.
Download GLUT header, lib, and dll files from OpenGL. (Mentioned on this page)
Paste glut.h in C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\\include\GL .
Create the GL folder if not present already. The may differ on your system.
Paste glut.lib in C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\\lib\x64 .
Paste glut32.lib in C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\\lib\x86. The may differ on your system.
Paste glut.dll and glut32.dll in C:\Windows\SysWOW64 .
Copy glut32.dll to C:\Windows\System32 also.
Open your Windows Console Application project in Visual Studio , or create a new one:
File > New > Project
Visual C++ > Windows Desktop > Windows Console ApplicationGo to Project > Properties .
Select All Configuration from Configuration dropdown menu on top left corner.
Select Configuration Properties > C/C++ > Precompiled headers and change Precompiled Header option’s value to Not Using Precompiled Headers .
Select Configuration Properties > Linker > Input . Now right click on Additional Dependencies found on right panel and click Edit.
(Note: Each .lib in new line)
That’s it. You have successfully installed OpenGL. Go on and run your program.
Same installation instructions apply to freeglut files with the header files in the GL folder, lib in the lib folder, and dll in the System32 folder.
You can check your installation by running a simple C++ OpenGL program to draw points on a 2D canvas.
В данном уроке демонстрируется подключение интерфейса OpenGL и приводится пример создания простого изображения с использованием этой технологии.
1. Создание Приложения WindowsForms / Windows Forms Application
2. Скачиваем библиотеки SharpGl
3. Подключение ссылок
Для подключения существует два пути. Первый: раздел из вкладки Сервис(Tools) в Диспетчер пакетов Nuget (NuGet Package Manager)->Консоль диспетчера пакетов (Package Manager Console)–>Выбрать в качестве Источника пакетов (Package Source) "nuget.org"(можно оставить все)->Ввести Install-Package SharpGL->Ввести Install-Package SharpGL.WinForms.
Второй способ: найти в Обозревателе решений (Solution Explorer) раздел Cссылки (References)->Добавить ссылку (Add reference):
Откроется Менеджер ссылок, необходим Обзор, далее находим у себя в файловой системе папку SharpGL.WinForms, где и лежат требуемые библиотеки SharpGl.dll, SharpGl.SceneGraph.dll, SharpGl.WinForms.dll:
Далее надо проверить в Обозревателе решений, в пункте Ссылки (References), появились ли ссылки SharpGl, SharpGl.SceneGraph, SharpGl.WinForms:
3. Добавление в панель элементов новых элементов
Первый шаг – простой, но не обязательный. Чтобы не добавить элементы в вкладку Общие, сделаем следующее. Свернем все группы элементов, последняя вкладка – Общие - обычно пустая, и если ее открыть, выскакивает надпись, что в данной группе элементов нет. Давайте щелкнем в свободной области панели правой кнопкой мыши и выберем «Добавить вкладку» из выпадающего списка. Создадим новую вкладку элементов, например, «MyOpenGL» – «группу» можно назвать как угодно:
Так как вкладка новая, увидим, что там элементов нет, щелкнем правой кнопкой по полоске с названием вкладки и далее из списка в «Выбрать элементы»:
Во вкладке MyOpenGL должны появиться элементы Указатель (Стандартно), GLColorPicker, OpenGLControl, SceneControl, VertexControl. Новые элементы добавлены и теперь можно наконец-то приступать к разработке.
4. Создание экземпляра OpenGL-формы
Для этого располагаем OpenGLControl на нашу форму и заходим в свойства нового объекта. Для лучшей ориентации рекомендуется использование категорий. Находим в первой же категории SharpGL такие атрибуты:
Dock – позиция нового «контрола» на форме. Введем «Fill», чтобы наш «контрол» занял всю площадь. Также можно из выпадающего списка выбрать «Центр», интуитивно будет понятно, что имеется в виду.
FrameRate – количество кадров, которые будут отрисованы в секунду. По умолчанию там 20, изменим на 30. Однако этот параметр зависит от того, насколько «тяжелое» приложение и FPS может быть и ниже.
OpenGLVersion – версия технологии, которую мы реализовываем – это OpenGL2_1, и она уже задана по умолчанию. На момент создания урока последняя версия – OpenGL4_4.
RenderTrigger – один из контекстов рендеринга, можно выбрать TimerBased – тогда каждый кадр будет отрисовываться на основании времени, т.е. с определенной частотой секунд. Если мы зададим Manual – рендеринг каждого кадра надо будет реализовывать вручную.
Последний, и самый интересный – DrawFPS.
Его используют, если хотят проверить, как работает приложение. Можете сразу перейти к выполнению следующего пункта, но лучше прочитайте его до конца.
Зададим значение атрибута DrawFPS равным True. После запуска проекта получим ошибку типа System.NullReferenceException и следующие:
«Элемент управления Sharp.OpenGL вернул в конструкторе необработанное исключение и был отклонен. Исключение: Ссылка на объект не указывает на экземпляр объекта.»Это происходит, если предварительно не задать в событиях нашего «контрола» свойство атрибута OpenGLDraw, просто щелкнув мышью по незаполненному полю атрибута. Перейдем из конструктора к коду, для этого можно нажать F7 или на поле формы щелкнуть правой кнопкой мыши и выбрать этот пункт из выпадающего списка. Увидим, что появилась следующая функция – обработчик событий, которая и отрисовывает «контрол»:
private void openGLControl1_OpenGLDraw ( object sender, RenderEventArgs args ) { }
Она будет вызываться каждый раз при отрисовке нашего кадра – как в цикле.
Теперь можно запустить проект и он успешно выполнится. Вывод будет состоять из просто черного экрана. На форме в конструкторе будет отображаться текст ошибки:Это будет оставаться, пока не реализуем пункт 5, и поэтому не стоит обращать внимание. Все же лучше этого не видеть и сделать все сразу правильно.
5. Очистка буфера и создание. Реализация отрисовки
После всех операций при запуске приложения внизу все равно будут отображаться непонятные цифры и символы:
Это происходит, потому что картинка обновляется очень много раз в секунду, но мы ее не очищаем и она заполняет буфер. Устраним это.
Для того, чтобы не использовать полные имена типов, сначала просто пропишем вверху пространства имен:Там находятся все те функции, которые нам необходимы для работы в этом примере. В коде мы видим Инициализатор формы InitializeComponent(); – ее конструктор, который создан автоматически.
В обработчике событий пропишем следующие команды. Т.к. мы реализуем ООП, то сначала создаем экземпляр окна, в котором будем рисовать, чтобы было удобно обращаться к нашему «контролу».OpenGL gl = this . openGLControl1 . OpenGL ;
После вызываем функцию очистки буфера и очищаем и цветовой буфер – буфер, в котором хранятся цвета объектов, и буфер глубины – уже с «глубинами» этих объектов с помощью операции «ИЛИ» (|). Дело в том, что без этой операции изображения и цифры просто будут накладываться друг на друга, и мы будем видеть то изображение, которое получили в пункте 4.
gl . Clear ( OpenGL . GL_COLOR_BUFFER_BIT | OpenGL . GL_DEPTH_BUFFER_BIT ) ;
Далее возвращаем центр координат в начальную точку и сбрасываем модельно-видовую матрицу, которая реализовывает передвижение, вращение и подобные операции над объектами.
После выполняем сдвиг пера, которым будем рисовать объекты, с помощью метода gl.Translate(X.Xf, Y.Yf, Z.Zf). Для этого устанавливаем Z.Zf = -5.0f, а остальное – по нулям. И, наконец, рисуем белый треугольник.
Задание цвета производится методом gl.Color(R.rf, G.gf, B.bf);, принимающего на вход три вещественных параметра в диапазоне [0.0; 1.0] - интенсивность красного, зеленого и синего цветов соответственно.
Читайте также: