opengl+qt+vs学习笔记1:软件下载安装以及配置
? ? ? 目前新階段學習的第一個項目,僅以此文記錄我的學習過程。如果有錯誤的、不全面的地方,歡迎斧正!
? ? ? 下載軟件部分還算簡單,感覺順序也應該不是關鍵。我安裝的是visual studio 2019,OpenGL2以及qt5.14.2。
一、visual studio的安裝
? ? ? ?1.官網地址:
Visual Studio: IDE and Code Editor for Software Developers and Teams
隨后找到“下載visual studio”并點擊選擇community版本(個人版)即可,三個版本中只有這個版本是免費的。
當然,如果一開始配置不全,后期也可以根據需要再打開visual studio installer修改其配置,這里花的時間挺長的,需要耐心等等。
?
? ? ? 2. 至此安裝基本完成。注冊一個賬號便可以開始使用。
二、OpenGL的安裝
首先需要注意的是,一定要先安裝好vs才能安裝OpenGL。
?????下載鏈接如下: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 <iostream> #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 core\n" "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 core\n" "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);//配置GLFWglfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//配置GLFWglfwWindowHint(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;}//dataint isSuccess;char infoLog[512];//vertexShader dataunsigned 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 Dataunsigned 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 Pragramunsigned 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 dataunsigned 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插件
總結
以上是生活随笔為你收集整理的opengl+qt+vs学习笔记1:软件下载安装以及配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rapidxml库生成xml小例子及需注
- 下一篇: 面试2年经验的Java程序员面试题部分带