日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

opengl+qt+vs学习笔记1:软件下载安装以及配置

發布時間:2024/8/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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版本(個人版)即可,三個版本中只有這個版本是免費的。

  • 下載完成之后,我們要對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 <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:软件下载安装以及配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。