国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于 Visual Studio 配置 opengl 環(huán)境

這篇具有很好參考價值的文章主要介紹了基于 Visual Studio 配置 opengl 環(huán)境。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

基于 Visual Studio 配置 opengl 環(huán)境


下載內(nèi)容

  • Visual Studio 2022
  • glfw
  • glad

Visual Studio 2022

打開鏈接,看到如下界面:
基于 Visual Studio 配置 opengl 環(huán)境

傻瓜式安裝即可,如果不知道需要安裝什么環(huán)境,可以什么都不裝。

glfw

打開鏈接,看到如下界面:
基于 Visual Studio 配置 opengl 環(huán)境

注意下載 win32 版本。

glad

打開鏈接,看到如下界面:
基于 Visual Studio 配置 opengl 環(huán)境
選擇上述內(nèi)容后,點(diǎn)擊 generate。跳轉(zhuǎn)后下載出現(xiàn)的安裝包即可。

環(huán)境配置

調(diào)整 Visual Studio

首先打開 Visual Studio Installer,點(diǎn)擊修改,安裝如下兩個環(huán)境:
基于 Visual Studio 配置 opengl 環(huán)境
基于 Visual Studio 配置 opengl 環(huán)境

創(chuàng)建項目

打開 Visual Studio,并創(chuàng)建項目:
基于 Visual Studio 配置 opengl 環(huán)境
這里選控制臺應(yīng)用:
基于 Visual Studio 配置 opengl 環(huán)境

注意勾選以下選項:
基于 Visual Studio 配置 opengl 環(huán)境
如果沒有問題你將會跳轉(zhuǎn)到如下界面:
基于 Visual Studio 配置 opengl 環(huán)境

放置項目文件

打開項目所在文件夾:基于 Visual Studio 配置 opengl 環(huán)境
我們創(chuàng)建如下的文件夾:

  • build:這將是 vs 的工作目錄
  • include:這將是頭文件的存放目錄
  • libs:這將是鏈接文件的存放目錄
  • src:這將是源文件的存放目錄
  • utils:這將是輔助文件的存放目錄
    基于 Visual Studio 配置 opengl 環(huán)境

打開之前下載的 glad 壓縮包:

  • 將 glad-include 中的文件移動到本項目的 include
  • 將 glad-src 中的文件移動到本項目的 src
    基于 Visual Studio 配置 opengl 環(huán)境

打開之前下載的 glfw 壓縮包:

  • 將 glfw-include 中的文件移動到本項目的 include
  • 將 glfw-lib-vc2022 中的文件移動到本項目的 libs
    基于 Visual Studio 配置 opengl 環(huán)境

順便,你可以刪除 project.cpp 文件。
現(xiàn)在項目如下所示:
基于 Visual Studio 配置 opengl 環(huán)境

設(shè)置項目

打開項目屬性:
基于 Visual Studio 配置 opengl 環(huán)境

常規(guī)部分:將工作目錄改為./build
基于 Visual Studio 配置 opengl 環(huán)境
調(diào)試部分同理:
基于 Visual Studio 配置 opengl 環(huán)境

注意將位于窗口頂部的配置選項設(shè)為所有配置,平臺選項設(shè)為Win32。

c/c++ 部分:
附加包含目錄 處添加./include
基于 Visual Studio 配置 opengl 環(huán)境

鏈接器部分:
附加庫目錄處添加./libs
基于 Visual Studio 配置 opengl 環(huán)境

附加依賴項處添加如下信息:

opengl32.lib
glfw3.lib
msvcrt.lib

基于 Visual Studio 配置 opengl 環(huán)境

點(diǎn)擊右下角應(yīng)用,即可保存。

測試

顯示所有文件,在 ./src 中找到之前放入的 glad.c,將其包括到項目中:
基于 Visual Studio 配置 opengl 環(huán)境
基于 Visual Studio 配置 opengl 環(huán)境

右擊右側(cè)空白,在 ./src 中創(chuàng)建 main.cpp 文件:
基于 Visual Studio 配置 opengl 環(huán)境
基于 Visual Studio 配置 opengl 環(huán)境

通過這種方式創(chuàng)建的文件,會被自動包含到項目中。

打開 main.cpp,加入以下內(nèi)容:
基于 Visual Studio 配置 opengl 環(huán)境

#include <glad/glad.h>
#include <GLFW/glfw3.h>

#include <iostream>

void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window);

// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;

const char *vertexShaderSource = "#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"
    "}\0";
const char *fragmentShaderSource = "#version 330 core\n"
    "out vec4 FragColor;\n"
    "void main()\n"
    "{\n"
    "   FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n"
    "}\n\0";

int main()
{
    // glfw: initialize and configure
    // ------------------------------
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

#ifdef __APPLE__
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif

    // glfw window creation
    // --------------------
    GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
    if (window == NULL)
    {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

    // glad: load all OpenGL function pointers
    // ---------------------------------------
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }


    // build and compile our shader program
    // ------------------------------------
    // vertex shader
    unsigned int vertexShader = glCreateShader(GL_VERTEX_SHADER);
    glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
    glCompileShader(vertexShader);
    // check for shader compile errors
    int success;
    char infoLog[512];
    glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);
    if (!success)
    {
        glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);
        std::cout << "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n" << infoLog << std::endl;
    }
    // fragment shader
    unsigned int fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
    glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);
    glCompileShader(fragmentShader);
    // check for shader compile errors
    glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &success);
    if (!success)
    {
        glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog);
        std::cout << "ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n" << infoLog << std::endl;
    }
    // link shaders
    unsigned int shaderProgram = glCreateProgram();
    glAttachShader(shaderProgram, vertexShader);
    glAttachShader(shaderProgram, fragmentShader);
    glLinkProgram(shaderProgram);
    // check for linking errors
    glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success);
    if (!success) {
        glGetProgramInfoLog(shaderProgram, 512, NULL, infoLog);
        std::cout << "ERROR::SHADER::PROGRAM::LINKING_FAILED\n" << infoLog << std::endl;
    }
    glDeleteShader(vertexShader);
    glDeleteShader(fragmentShader);

    // set up vertex data (and buffer(s)) and configure vertex attributes
    // ------------------------------------------------------------------
    float vertices[] = {
        -0.5f, -0.5f, 0.0f, // left  
         0.5f, -0.5f, 0.0f, // right 
         0.0f,  0.5f, 0.0f  // top   
    }; 

    unsigned int VBO, VAO;
    glGenVertexArrays(1, &VAO);
    glGenBuffers(1, &VBO);
    // bind the Vertex Array Object first, then bind and set vertex buffer(s), and then configure vertex attributes(s).
    glBindVertexArray(VAO);

    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);

    // note that this is allowed, the call to glVertexAttribPointer registered VBO as the vertex attribute's bound vertex buffer object so afterwards we can safely unbind
    glBindBuffer(GL_ARRAY_BUFFER, 0); 

    // You can unbind the VAO afterwards so other VAO calls won't accidentally modify this VAO, but this rarely happens. Modifying other
    // VAOs requires a call to glBindVertexArray anyways so we generally don't unbind VAOs (nor VBOs) when it's not directly necessary.
    glBindVertexArray(0); 


    // uncomment this call to draw in wireframe polygons.
    //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

    // render loop
    // -----------
    while (!glfwWindowShouldClose(window))
    {
        // input
        // -----
        processInput(window);

        // render
        // ------
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

        // draw our first triangle
        glUseProgram(shaderProgram);
        glBindVertexArray(VAO); // seeing as we only have a single VAO there's no need to bind it every time, but we'll do so to keep things a bit more organized
        glDrawArrays(GL_TRIANGLES, 0, 3);
        // glBindVertexArray(0); // no need to unbind it every time 
 
        // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)
        // -------------------------------------------------------------------------------
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    // optional: de-allocate all resources once they've outlived their purpose:
    // ------------------------------------------------------------------------
    glDeleteVertexArrays(1, &VAO);
    glDeleteBuffers(1, &VBO);
    glDeleteProgram(shaderProgram);

    // glfw: terminate, clearing all previously allocated GLFW resources.
    // ------------------------------------------------------------------
    glfwTerminate();
    return 0;
}

// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly
// ---------------------------------------------------------------------------------------------------------
void processInput(GLFWwindow *window)
{
    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
        glfwSetWindowShouldClose(window, true);
}

// glfw: whenever the window size changed (by OS or user resize) this callback function executes
// ---------------------------------------------------------------------------------------------
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    // make sure the viewport matches the new window dimensions; note that width and 
    // height will be significantly larger than specified on retina displays.
    glViewport(0, 0, width, height);
}

修改運(yùn)行選項,并開始運(yùn)行:
基于 Visual Studio 配置 opengl 環(huán)境

最后,你應(yīng)該能看到一個三角形:
基于 Visual Studio 配置 opengl 環(huán)境文章來源地址http://www.zghlxwxcb.cn/news/detail-448287.html

參考資料

  • https://blog.csdn.net/weixin_44716867/article/details/110726972
  • https://learnopengl-cn.github.io/01%20Getting%20started/02%20Creating%20a%20window/

到了這里,關(guān)于基于 Visual Studio 配置 opengl 環(huán)境的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【配置環(huán)境】Visual Studio 配置 OpenCV

    【配置環(huán)境】Visual Studio 配置 OpenCV

    目錄 一,環(huán)境 二,下載和配置 OpenCV 三,創(chuàng)建一個 Visual Studio 項目 四,配置 Visual Studio 項目 五,編寫并編譯 OpenCV 程序 六,解決CMake編譯OpenCV報的錯誤 七,本人編譯好的庫 Windows 11 家庭中文版 Microsoft Visual Studio Community 2022 (64 位) - Current版本 17.5.3 CMake – 3.24.1 OpenCV – 4.8.0

    2024年02月08日
    瀏覽(20)
  • Visual Studio項目環(huán)境配置

    Visual Studio項目環(huán)境配置

    一. 靜態(tài)庫環(huán)境配置 1.1 添加靜態(tài)庫對應(yīng)的頭文件所在目錄 1.1.1 使用尖括號引用頭文件的配置 右鍵項目-屬性-配置屬性-VC++目錄 點(diǎn)擊包含目錄,點(diǎn)擊右邊的下拉箭頭,點(diǎn)擊編輯,添加新的項,手動輸入附加庫頭文件的路徑 點(diǎn)擊確定保存,這樣就能保證我們能用引用我們想要使

    2024年02月05日
    瀏覽(20)
  • Visual Studio搭建C++環(huán)境 配置教程

    Visual Studio搭建C++環(huán)境 配置教程

    1、下載軟件 官網(wǎng)下載需要安裝的版本Visual Studio: 面向軟件開發(fā)人員和 Teams 的 IDE 和代碼編輯器,目前最新版本更新到2022。 ?2、安裝軟件 雙擊下載的安裝文件,彈出安裝界面,?選擇工作負(fù)載,勾選 使用C++的桌面開發(fā) 和 Visual Studio擴(kuò)展開發(fā) 。我本地已經(jīng)裝了vs2019,直接選擇

    2023年04月08日
    瀏覽(26)
  • 一文搞定 Visual Studio 配置 OpenCV環(huán)境

    在 Visual Studio 上配置 OpenCV 環(huán)境是極其惱人的事情,尤其是對于初學(xué)者,經(jīng)常幾個小時過去了都配不好,將我們對代碼的熱愛扼殺在搖籃之中。 本文根據(jù)本人的無數(shù)次環(huán)境配置經(jīng)歷,總結(jié)了一套完整的 OpenCV 環(huán)境配置流程,包教包會,百分百成功。 要在 Visual Studio 上配置 Op

    2024年02月16日
    瀏覽(21)
  • MySQL開發(fā)環(huán)境的配置(visual studio)

    MySQL開發(fā)環(huán)境的配置(visual studio)

    本文主要講解在visual studio上編寫MySQL程序前,需要做的準(zhǔn)備。 1、MySQL開發(fā)頭文件和庫文件 找到MySQL的安裝目錄,在安裝目錄下找到lib和include目錄 ? 2、創(chuàng)建C++項目文件 ?右鍵項目方案,打開項目所在文件夾 ? ? ?將第一步,lib文件夾下的libmysql.dll和libmysql.lib文件,以及inclu

    2024年02月05日
    瀏覽(24)
  • <Visual Studio 2019安裝及環(huán)境配置教程>

    <Visual Studio 2019安裝及環(huán)境配置教程>

    目錄 1.Visual?Studio 2019下載安裝: 1.1?進(jìn)入官網(wǎng) 1.2?選擇所需Visual Studio 2019安裝包 1.3? Visual?Studio 2019?版本說明 1.4?點(diǎn)擊下載、安裝 1.5?登錄賬戶 1.6?使用演示 2.寫在最后的話:? 后記:●由于作者水平有限,文章難免存在謬誤之處,敬請讀者斧正,俚語成篇,懇望指教! ?

    2024年02月14日
    瀏覽(47)
  • MatlabR2022b + Visual Studio環(huán)境配置

    MatlabR2022b + Visual Studio環(huán)境配置

    在Matlab中輸入 mex -setup c++ 命令確認(rèn)MEX使用VS2022編譯環(huán)境。 VC++目錄-包含目錄-添加 D:Matlab2022bexterninclude VC++目錄-庫目錄-添加 D:Matlab2022bexternlibwin64mingw64 D:Matlab2022bexternlibwin64microsoft 鏈接器-輸入-添加 D:Matlab2022bexternlibwin64mingw64libmat.lib D:Matlab2022bexternlibwin64mingw

    2024年02月10日
    瀏覽(56)
  • Visual Studio Code配置Python運(yùn)行環(huán)境

    Visual Studio Code配置Python運(yùn)行環(huán)境

    Visual Studio Code配置Python運(yùn)行環(huán)境(保姆級教學(xué)) Visual Studio Code是微軟針對于編寫現(xiàn)代Web和云應(yīng)用開發(fā)的跨平臺源代碼編輯器,它支持多種語言和文件格式的編寫,并且啟動速度快,開源,語法高亮,顏值高等優(yōu)點(diǎn)集于一身,受到許多開發(fā)者的熱愛。 隨著Python編程語言迅速的

    2024年02月16日
    瀏覽(37)
  • Visual Studio 2022 cmake配置opencv開發(fā)環(huán)境

    Visual Studio 2022 cmake配置opencv開發(fā)環(huán)境

    這里我用的是 widnows 10 64位 , Visual Studio 用的 Visual Studio Community 2022 (社區(qū)版) 對于 Android 開發(fā)工程師來說,為什么要使用 Visual Studio 呢 ? 因為在 Visual Studio 中開發(fā)調(diào)試 OpenCV 方便,可以開發(fā)調(diào)試好后,再移植到 Android 中。 官方地址在這里 : 官方下載地址 不過官方下載地址可能

    2024年02月07日
    瀏覽(36)
  • FBX SDK 開發(fā)環(huán)境配置 visual studio 2022

    FBX SDK 開發(fā)環(huán)境配置 visual studio 2022

    FBX | Adaptable File Formats for 3D Animation Software | Autodesk. 下載windows的sdk并安裝. 創(chuàng)建一個c++ console 工程 設(shè)置include目錄 添加預(yù)處理宏?FBX_SHARED=1 添加fbx sdk lib 目錄 添加依賴lib :? libfbxsdk-md.lib libxml2-md.lib zlib-md.lib 配置完畢.

    2024年02月10日
    瀏覽(39)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包