生活随笔
收集整理的這篇文章主要介紹了
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"
#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
);}}
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);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR
, 3);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();return -1;}glfwMakeContextCurrent(window
);if (!gladLoadGLLoader((GLADloadproc
)glfwGetProcAddress
)){cout
<< "Failed to initialize GLAD" << endl
;return -1;}int isSuccess
;char infoLog
[512];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
;}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
;}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
);}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;
}
若出現報錯:默認庫MSVCRTD與……沖突,屬性->鏈接器->輸入->忽略特定默認庫->編輯,將MSVCRTD.lib添加進去即可
結果:
總結
以上是生活随笔為你收集整理的OpenGL安装教程的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。