終于抽出時間系統學習OpenGL 教程,同時也一步一步記錄怎樣利用openGL進行加速計算。
目錄
- 1、環境準備
- 1.1、庫的下載
- 1.2、庫的選擇及安裝
- 2、OpenGL第一個項目,Hello World!
- 2.1、新建hello world控制臺項目
- 2.2、配置openGL環境
- 2.2.1 包含目錄配置
- 2.2.2 庫目錄配置
- 2.2.3 庫文件配置
- 2.2.4 glad.c文件包含
- 2.3、Hello World主程序代碼
1、環境準備
1.1、庫的下載
需下載glfw庫、glad庫
1、glfw庫:官方下載地址
2、glad庫:官方下載地址
訪問官網后,根據下圖配置下載的版本等信息,點擊右下角的按鈕進入下載界面
在下載界面,下載壓縮包即可,如下圖
這里我也提供一下云盤下載地址,方便學習使用
通過網盤分享的文件:openGL_Lib
鏈接: https://pan.baidu.com/s/13Piu-gvnDoBylxkjZ5buJQ?pwd=6pk1 提取碼: 6pk1
--來自百度網盤超級會員v5的分享
1.2、庫的選擇及安裝
1、glad.zip文件解壓后如下圖
看看文件樹如下圖,里面沒有lib文件,都是源碼文件。所以glad.c文件后續跟著工程項目進行加載即可。
2、glfw-3.4.bin.WIN64.zip解壓后如下,工程中重點使用include文件夾和下面各個VS庫即可
我用的是VS2017,lib-vc2017文件夾如下,是個動態庫
2、OpenGL第一個項目,Hello World!
2.1、新建hello world控制臺項目
2.2、配置openGL環境
2.2.1 包含目錄配置
2.2.2 庫目錄配置
2.2.3 庫文件配置
2.2.4 glad.c文件包含
把glad.zip解壓的src中的glad.c文件拷貝到項目main.cpp同級目錄,并且添加進工程里
2.3、Hello World主程序代碼
主程序main.cpp文件代碼修改如下,一個空的openGL窗口即可彈出
#include <glad/glad.h>
#include "GLFW/glfw3.h"
#include <iostream>void framebuffer_size_callback(GLFWwindow* window,int width,int height)
{glViewport(0, 0, width, height);
}void processInput(GLFWwindow *window)
{//檢測是否有外部輸入if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS){glfwSetWindowShouldClose(window, true);//把關閉狀態設置為true}
}int main()
{glfwInit();//初始化上下文環境glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);//要求opengl 3版本以上glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);//GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL Core", NULL, NULL);//創建窗體if (window == NULL){std::cout << "Failed to create GLFW window" << std::endl;glfwTerminate();return -1;}glfwMakeContextCurrent(window);//上下文綁定窗體if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))//初始化函數指針,為下面函數做準備{std::cout << "Failed to initialize GLAD" << std::endl;return -1;}glViewport(0,0,800,600);//設置需要渲染的視口glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);//設置回調函數while ( !glfwWindowShouldClose(window))//創建的window關掉后就退出while循環{processInput(window);//glClearColor(0.2f,0.3f,0.3f,1.0f);//設置顏色glClear(GL_COLOR_BUFFER_BIT);//用設置的顏色把畫布進行清零掉glfwSwapBuffers(window);glfwPollEvents();}glfwTerminate();std::cout << "Hello World!\n";return 0;
}
運行后如下空窗口彈出,本篇完結。