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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OpenGL安装教程

發布時間:2024/8/1 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenGL安装教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenGL安裝教程

一、安裝前準備
1:VS2017
2:GLFW下載鏈接
(建議下載32位)
3:GLAD下載鏈接

點擊下面的generate,會看到一個glad.zip,直接下載即可。
二、安裝步驟
1.首先VS2017創建一個CPP工程,和正常創建工程一樣。
2.右鍵打開工程所在文件夾

3. 將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.測試配置是否成功
注意這樣安裝會使glad.c報錯,只需將#include"glad/glad.h"替換glad.c的不能打開的那句,或者改變之前安裝方式,include文件夾下直接放庫文件

#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; }

若出現報錯:默認庫MSVCRTD與……沖突,屬性->鏈接器->輸入->忽略特定默認庫->編輯,將MSVCRTD.lib添加進去即可
結果:

總結

以上是生活随笔為你收集整理的OpenGL安装教程的全部內容,希望文章能夠幫你解決所遇到的問題。

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