如何使用OpenGL设置Visual Studio代码



我正在尝试为opengl开发设置visual studio代码。我已经为普通的c/c++开发工作了,我现在正试图将opengl开发添加到混合中。我知道如何在其他平台(如Eclipse、Xcode、Visual Studio、CodeBlocks)上设置opengl。我问题的根源更多的是如何在visualstudio代码中设置依赖项。我的最佳猜测是在task.json文件中运行一个任务。现在,每当我运行程序时,它就充满了编译项目的代码。

OpenGl&C/C++&VSCode

遇到了同样的问题。注意这里有两个问题:

  1. 如何设置launch.jsontasks.json文件?
    • 从使用VSCode进行C++编程的官方VSCode文档开始
    • 任务文档更详细地解释了如何设置和运行tasks
  2. 要使用哪些命令来编译代码?
    • 这就是它变得棘手的地方。编译取决于操作系统和环境。以下部分主要集中于此:

MAC

对我来说,主要的问题是我使用的是MAC,许多解释只针对Linux和Windows(它们没有framework参数),或者它们解释了如何在Xcode GUI中设置这一切。

TL;DR

正如这篇Github Gist和这篇StackOverflow帖子都建议的那样:

  1. 修复包含文件名
    • 并非所有内容都在<gl/*>中(例如,Mac的<OpenGL/*>用于部分内容,<GLUT/*>用于供过于求文件)
  2. 为了运行,请将framework添加到构建参数中(以包括外部库),例如。。。
    • gcc -o ex1 ex1.c -framework GLUT -framework OpenGL -Wno-deprecated
    • cc <your_file.c> -framework GLUT -framework OpenGL
  3. 别忘了:将这些frameworks添加到C/C++扩展设置和/或tasks.json

(再次:使用clangclang++时非常相似)

将这一见解与C/C++tasks的官方文档集成在一起,一切都完成了!:)

更多详细信息

以上只是我整个旅程的一个简短版本,详细如下:

  1. 我还从使用VSCode进行C++编程的官方VSCode指令开始(您也提到了这一点)
  2. 然后我按照他们底部的链接:在Visual Studio代码中使用Clang(GCC设置非常相似)
  3. 遵循这个Github Gist关于Mac和非Mac OpenGl编译之间的差异。有两个主要区别:
    1. APPLE路径略有不同;并非所有内容都在<gl/*>中(例如,核心文件的<OpenGL/*>和供过于求文件的<GLUT/*>)
    2. 您必须通过framework标志添加OpenGL和其他库
  4. 一旦你处理好了:
    1. 也将这些frameworks添加到C/C++扩展设置中
    2. (刚开始时,您可能希望减少弃用警告;因为OpenGL在过去十年中使用-Wno-deprecated进行了重大更改)
  5. 如果您以前没有这样做过,您可能想要brew install glewbrew install glfw和/或您使用的任何其他外部库

关于Windows&Linux

VSCode设置基本相同。一旦正确设置了C/C++扩展,请确保查看位于官方"C/C++for Visual Studio Code"文档页底部的环境文档。

然而,更大的问题通常是如何编译它。我最近没有在非MAC系统上编译的例子或经验;但这里有一些相关的参考文献:

  1. 在Linux上编译OpenGl
  2. 在Windows环境下用GCC编译OpenGl

跨平台ish

显然,根据这个(到目前为止)开放的github问题#1083,跨平台开发仍然可能会引起一些头痛。

我还发现了一个例子,有人在这里尝试使用VSCode进行OpenGl跨平台编译。您可能需要签出他们的整个.vscode/文件夹(如果不是他们的整个项目设置)。

点击按钮即可运行+调试

现在,按照以下说明,可以很容易地将任意数量的启动(运行和/或调试)配置添加到内置的启动+调试器UI中。

[已弃用]VSCode"Code Runner"扩展

在调试器UI出现之前(或者至少在我注意到它之前),您可以安装CodeRunner扩展,您会在右上角(或Command+Alt+N)看到一个整洁的"运行代码"小按钮。

如果你只想用它来运行一个可执行文件,这很好。如果你想单独运行单个文件,这会变得有点困难。我还没有尝试过,但正如他们所建议的,为此,您可以使用一种特殊的文件命名模式,即glob模式(例如*.gl.cpp),并使用code-runner.executorMapByGlob设置根据文件名使用不同的编译+运行参数。

Ubuntu解决方案:

有同样的问题,我必须做的只是:

安装

sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev libglew-dev

如前所述

然后

  • (打开vscode)>文件>打开文件夹>";选择您的c++的项目文件夹">
  • 打开要编译的.cpp文件(从开始)
  • 然后产生CCD_;F5〃>选择";C++(GDB/LLDB)">选择g++编译器>停止编译过程
  • 编辑tasks.json,添加额外的参数(如@crazypicklerick所述),如下所示:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"-lGLU",
"-lglfw",
"-lGLEW",
"-lGL",
"-lglut"   
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
  • 保存文件并返回主.cpp文件

✔️按下";F5〃;再次,它应该立即运行

如果使用gcc/gdb,则在构建任务中添加这些参数-lGLU-lGL-lglut

>OpenGl_c++_GLFW_GLAD_VScode_Linux_mint(Ubuntu/Debian)设置

要求:

第1部分:系统配置

**1) **linux mint预装了c/c++编译器。

**2) **下载带有c++扩展和支持(包括语法高亮显示)的linux_mint的vscode。

提示:超级用户文件安装在/usr/中,本地用户文件存储在/usr/local/中,任何文件都可以在此处使用。

**3) **打开终端并键入以下命令,该命令将安装GLFW库和opengl台面库。

sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev libglew-dev

使用以下内容检查glfw是否已安装以及mint/ubuntu上的位置:

pkg-config --cflags glfw3

**4) **从网站下载高兴https://glad.dav1d.de/现在在网站上选择:

  • 语言=C/C++
  • 规范=OpenGL
  • API>gl=3.3
  • 轮廓=核心

然后点击generate下载高兴的zip。现在将glad.zip文件解压缩到系统上的任何位置,打开它可以找到Includescr文件。

打开scr文件,然后将greed.c文件复制到包含cpp文件的项目文件夹中。

打开include文件,然后像这样将gree和khr文件复制到usr/include中--->include/gree/gree.h和/include/KHR/KHR.h到/usr/include,这可以通过以下命令完成:

cp -r PathToYourUnzippedGladFolder/include/glad  /usr/include
cp -r PathToYourUnzippedGladFolder/include/KHR  /usr/include

cp -r PathToYourUnzippedGladFolder/include/glad  /usr/local/include

cp -r PathToYourUnzippedGladFolder/include/KHR  /usr/local/include

默认情况下,linux可能不允许读取和写入这些包含文件的权限,以便授予权限并避免编译过程中出现被拒绝的错误请使用此命令。(转到粘贴高兴文件和KHR包含文件的/use/include/usr/local/include文件夹)

chmod 755 myfolder //example  `chmod 755 glad` , `chmod 755 KHR`

第2部分:VScode配置

**5) **为opengl项目/编码创建一个文件夹,并在该文件夹中打开vscode,然后创建一个cpp文件,将其命名为anything。让我们从learnopengl中粘贴一个简单的三角形opengl代码,该代码已经、glfw和grey使用过。

**6) **只需打开Tasks.json文件进行编辑即可。只需将其复制到其中即可。

"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",

"-lGLU",         
"-lglfw",
"-lGLEW",
"-lGL",
"-lglut" ,
"${workspaceFolder}/glad.c"                   

],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"

}

  1. 保存每个文件,并使用f5运行您的cpp文件,它应该可以工作,并成为triale的可执行文件

记得在tasks.json文件中添加"${workspaceFolder}/glad.c",如上图所示,或者只需复制粘贴上面的tasks.json代码

2张屏幕截图:我的tasks.json屏幕截图我在usr的glfw愉快位置包括

最新更新