目前新阶段学习的第一个项目,仅以此文记录我的学习过程。如果有错误的、不全面的地方,欢迎斧正!
下载软件部分还算简单,感觉顺序也应该不是关键。我安装的是visual studio 2019,OpenGL2以及qt5.14.2。
一、visual studio的安装
1.官网地址:
Visual Studio: IDE and Code Editor for Software Developers and Teams
随后找到“下载visual studio”并点击选择community版本(个人版)即可,三个版本中只有这个版本是免费的。
- 下载完成之后,我们要对VS进行一些配置,这里我就针对vs+opengl+qt的项目进行配置。
当然,如果一开始配置不全,后期也可以根据需要再打开visual studio installer修改其配置,这里花的时间挺长的,需要耐心等等。
2. 至此安装基本完成。注册一个账号便可以开始使用。
二、OpenGL的安装
首先需要注意的是,一定要先安装好vs才能安装OpenGL。
- 下载32位的GLFW(这个位数应该是32、64位的都可以,都不会影响后面的使用,但我记得说是安装32位的有个什么优点,另外,它和我们计算机的位数是无关的)。
下载链接如下:Download | GLFW
2. GLAD下载链接如下:https://glad.dav1d.de
需要修改的一个是gl版本,我们选择3.3以上的(具体为什么我也不知道,选太高的能不能运行我也不知道),profile下面选择core,然后点击下面的generate,会看到一个glad.zip,直接下载即可。
至此,准备工作完成。
3. 这时在VS2019里创建一个新的CPP工程,打开工程所在的文件夹,将glad文件夹下的include文件夹复制到刚才打开的文件夹下,并且也将glfw下include文件夹下的GLFW文件夹复制到刚刚的include文件夹下;
在刚刚打开的工程目录下新建lib文件夹,将glfw文件夹下的lib-vc2017下的两个静态库文件复制到新建的lib文件夹下;
将glad下的src文件夹里的glad.c也复制到工程目录下,右键源文件添加现有项,将glad.c文件添加进去(非常拗口,但慢慢来就行,毕竟我也找不到更合适的语言表达了)
显示如下,当然因为我的项目已经运行过所以会多出几个。
4. 接下来是对项目进行配置,配置过程等如下:
右键打开工程属性
先在C/C++下附加包含目录按如下配置
然后在链接器配置附加库目录
再点击链接器下输入,进入附加依赖项
添加opengl32.lib,glfw3.lib,msvcrt.lib
在属性里点击右下角应用即可保存设置
5. 测试
#include#include"glad/glad.h"//!!!注意这里,/前面的是h文件的上级目录,可能每个人安装不同,也有不同 #include"GLFW/glfw3.h" using namespace std; static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) { glfwSetWindowShouldClose(window, GL_TRUE); } } //vertex shader const GLchar* vertexShader_Code = "#version 330 coren" "layout(location=0) in vec3 aPos;n" "void main()n" "{n" "gl_Position=vec4(aPos.x,aPos.y,aPos.z,1.0);n" "}"; const GLchar* fragmentShader_Code = "#version 330 coren" "out vec4 FragColor;n" "void main()n" "{n" "FragColor=vec4(1.0f, 0.5f, 0.2f, 1.0f);n" "}"; int main() { //三角顶点 float vertices[] = { -0.5f,-0.5f,0.0f,//左下角 0.5f,-0.5f,0.0f,//右下角 0.0f, 0.5f,0.0f//顶端角 }; glfwInit();//初始化 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//配置GLFW glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//配置GLFW glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);// glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", nullptr, nullptr); glfwSetKeyCallback(window, key_callback); if (window == nullptr) { cout << "Failed to create GLFW window" << endl; glfwTerminate();//terminate the glfw(end the glfw) return -1; } glfwMakeContextCurrent(window);//设置当前openGL上下 if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { cout << "Failed to initialize GLAD" << endl; return -1; } //data int isSuccess; char infoLog[512]; //vertexShader data unsigned int vertexShader; vertexShader = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertexShader, 1, &vertexShader_Code, NULL); glCompileShader(vertexShader); glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &isSuccess); if (!isSuccess) { glGetShaderInfoLog(vertexShader, 512, NULL, infoLog); cout << "ERROR::VertexShader::Compile_failed" << infoLog << endl; } else { cout << "SUCCESS::VertexShader" << endl; } //fragmentShader Data unsigned int fragmentShader; fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragmentShader, 1, &fragmentShader_Code, NULL); glCompileShader(fragmentShader); glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &isSuccess); if (!isSuccess) { glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog); cout << "ERROR::FragmentShader::Compile_failed" << infoLog << endl; } else { cout << "SUCCESS::FragmentShader" << endl; } //Shader Pragram unsigned int shaderProgram; shaderProgram = glCreateProgram(); glAttachShader(shaderProgram, vertexShader); glAttachShader(shaderProgram, fragmentShader); glLinkProgram(shaderProgram); glGetProgramiv(shaderProgram, GL_LINK_STATUS, &isSuccess); if (!isSuccess) { glGetShaderInfoLog(shaderProgram, 512, NULL, infoLog); cout << "ERROR::ShaderProgram::Link_failed" << infoLog << endl; } else { cout << "SUCCESS::ShaderProgram" << endl; glUseProgram(shaderProgram); glDeleteShader(vertexShader); glDeleteShader(fragmentShader); } //vectices data unsigned int VAO; unsigned int VBO; glGenVertexArrays(1, &VAO);//获得一个顶点数组对象 glBindVertexArray(VAO); glGenBuffers(1, &VBO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, 0); glBindVertexArray(0); while (!glfwWindowShouldClose(window)) { glfwPollEvents();//检查有没有触发事件 glClearColor(0.27f, 0.27f, 0.27f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(shaderProgram); glBindVertexArray(VAO); glDrawArrays(GL_TRIANGLES, 0, 3); glfwSwapBuffers(window);//双缓冲(替换窗口的每一个像素值) } glfwTerminate(); return 0; }
三、Qt插件的安装
1. 安装qt软件QT下载网址(各版本).
QT(5.12.11)直达界面.
下面这些图都用了别人的,我安装的是qt5.14.2版本,感觉大方向应该不会有问题。
根据操作系统不同,选择相应版本下载
双击运行…
输入QT账号信息,没有需要注册一个
在下一个界面中需要去勾选编译器,本项目需要勾选的编译器是MSVC32bit和64bit,两个都需要勾选,其他的不会用到。
Qt插件的安装据我目前所知,不一样的VS版本找的位置不一样,但都是在扩展里面去找,我所用的是VS2019,他的位置就在最上面的菜单栏上(扩展X)。
点击管理扩展,然后在里面找到qt插件并安装安装结束之后,扩展里就会出现Qt VS Tools,然后重新打开VS,新建项目时会有”QT GUI Application"则说明安装成功。
到这软件安装完成。
写博客比我想象的难多了,本来我还打算自己一个字一个字地码,一个步骤一个步骤地截屏,现在看来,是我自己想多了,文章中加了很多别人的东西。链接如下:
(90条消息) OpenGL安装教程_Thinker 123的博客-CSDN博客_opengl安装
(90条消息) QT安装 and VS2019中安装QT插件_8倍的博客-CSDN博客_vs2019安装qt插件



