OpenGL學習——第一天(環境搭建VS2017)
雖然寫這個部落格主要目的是為了給我自己做一個思路記憶錄,但是如果你恰好點了進來,那麼先對你說一聲歡迎。我並不是什麼大觸,只是一個菜菜的學生,如果您發現了什麼錯誤或者您對於某些地方有更好的意見,非常歡迎您的斧正!
學習來源:https://learnopengl-cn.github.io/01%20Getting%20started/01%20OpenGL/
還是老話吧,為了學過就忘,準備寫點東西,或者摘抄點東西。
目錄
❶前提需知:
●需求:有一點基礎的C++水平。
●綠色方框是一些註釋或者是對於OpenGL或討論主題有用的特性/提示。
●紅色方框是一些警告或者一些你需要特別注意的特性。
●藍色方框是翻譯時為了幫助讀者理解附加的一些資訊。
❷擴充套件
●OpenGL的一大特性就是對擴充套件(Extension)的支援:(學習過程很少需要碰到)
if(GL_ARB_extension_name) { // 使用硬體支援的全新的現代特性 }else { // 不支援此擴充套件: 用舊的方式去做 } |
❸OpenGL本身就是個狀態機
OpenGL自身是一個巨大的狀態機(State Machine)
●個人理解:狀態機就是根據不同的上下文改變到不同的狀態。比如我現在的狀態是學習,如果有家長打電話給我,我的狀態就是接電話;如果中午要吃飯,那麼我的狀態就變成了吃飯。就是這樣根據條件改變狀態的一種狀態轉移圖的感覺。
❹物件(沒記錄)
這裡一開始看比較懵逼,我們先開始正式學習!
❶環境配置
VS2017下載
●我找了一篇文章:OpenGL 開發環境配置:Visual Studio 2017 + GLFW + GLEW
https://www.cnblogs.com/AnKen/p/8057000.html
●啊如果你還沒有VS,那麼就去官網下個免費的。你要是打不開這個連結,那麼百度搜索microsoft,點進入就好了。
https://www.microsoft.com/zh-cn/
點進去找到這個Visual Studio
下這個community就好了。
●文章裡提到了:“2017版本在安裝介面裡注意要勾選c++相關選項,否則預設不安裝c++元件。”那麼我記得我安裝的時候就是預設安裝的,所以就找到“控制面板”,在裡面找到Visual Studio,然後右鍵點選更改。
後來感覺這篇文章自己看不下去,不知道他要幹什麼,於是我又多找了幾篇,這篇不錯:
【PT君的OpenGL】第一天【VS2017+OpenGL環境的配置(固定管線+可程式設計管線)】
https://blog.csdn.net/qq_19003345/article/details/76098781/
環境搭建
①...\VC\Tools\MSVC\14.15.26726\include\gl(你自己的VS路徑,沒有gl就自己新建一下)
裡面存放glut.h
②...\VC\Tools\MSVC\14.15.26726\lib\x86裡面存放glut.lib與glut32.lib
③C:\Windows\SysWOW64裡面存放glut.dll與glut32.dll(32位系統放在system32)
根據這篇部落格(這篇部落格真的好!)的測試程式碼測試一下,大概就會出現一個白色的矩形。(程式碼是他文章裡的)
#include <GL/glut.h>
void Show()
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.1f, -0.1f, 0.5f, 0.5f);
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("OpenGL");
glutDisplayFunc(Show);
glutMainLoop();
return 0;
}
GLFW
下載GLFW(管理視窗:它就是在你畫畫的時候給你一塊畫布)
下載地址:https://www.glfw.org/download.html
下載32-bit Windows binaries(我下的這個)
●然後我們去VS,右擊OpenGL(我創立的這個程式叫做OpenGL,你哪怕建立“老子天下第一”也沒事),開啟屬性(最後一個)。
●然後我們就要改東西了,當然你也可以學習我推薦那個博主的機智方法。
“包含目錄”<—include
“庫目錄”<—vc2015
●再改一個地方:opengl32.lib;glfw3.lib;%(AdditionalDependencies)
GLAD
●下載GLAD:使用OpenGL函式
●下載地址:https://glad.dav1d.de/
●然後在右下角點選GENRATE,下載這個glad.zip
●解壓後得到兩個資料夾
①把include裡的東西都複製到剛剛的lib-vc2015裡面
②把src裡面的glad.c加到我們的程式資料夾中。比如我的是OpenGL:
●然後右擊“原始檔”—>“新增”—>“現有項”
測試
●輸入以下程式碼(也來自那個大佬的部落格:向大佬致敬)
#include "glad\glad.h"
#include "glfw3.h"
#include <iostream>
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGLShader", NULL, NULL);
if (window == NULL)
{
std::cout << "建立視窗失敗" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "初始化GLAD失敗" << std::endl;
return -1;
}
while (!glfwWindowShouldClose(window))
{
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
最後出現什麼都沒有的黑框框:we win!
那今天就到這裡吧,感謝您的閱讀,希望對您的有所幫助!
參考部落格:
【PT君的OpenGL】第一天【VS2017+OpenGL環境的配置(固定管線+可程式設計管線)】
https://blog.csdn.net/qq_19003345/article/details/76098781/