1. 程式人生 > >OpenGL學習——第一天(環境搭建VS2017)

OpenGL學習——第一天(環境搭建VS2017)

雖然寫這個部落格主要目的是為了給我自己做一個思路記憶錄,但是如果你恰好點了進來,那麼先對你說一聲歡迎。我並不是什麼大觸,只是一個菜菜的學生,如果您發現了什麼錯誤或者您對於某些地方有更好的意見,非常歡迎您的斧正!

學習來源:https://learnopengl-cn.github.io/01%20Getting%20started/01%20OpenGL/

還是老話吧,為了學過就忘,準備寫點東西,或者摘抄點東西。

目錄

❶前提需知:

❷擴充套件

❸OpenGL本身就是個狀態機

❹物件(沒記錄)

❶環境配置


前提需知

●需求:有一點基礎的C++水平。

綠色方框是一些註釋或者是對於OpenGL或討論主題有用的特性/提示。

紅色方框是一些警告或者一些你需要特別注意的特性。

藍色方框是翻譯時為了幫助讀者理解附加的一些資訊。

擴充套件

●OpenGL的一大特性就是對擴充套件(Extension)的支援:(學習過程很少需要碰到)

if(GL_ARB_extension_name)

{

    // 使用硬體支援的全新的現代特性

}else

{

    // 不支援此擴充套件: 用舊的方式去做

}

 

❸OpenGL本身就是個狀態機

OpenGL自身是一個巨大的狀態機(State Machine)

:一系列的變數描述OpenGL此刻應當如何執行。OpenGL的狀態通常被稱為OpenGL上下文(Context)。我們通常使用如下途徑去更改OpenGL狀態:設定選項操作緩衝。最後,我們使用當前OpenGL上下文來渲染。(這裡大概看到這裡就夠了)

●個人理解:狀態機就是根據不同的上下文改變到不同的狀態。比如我現在的狀態是學習,如果有家長打電話給我,我的狀態就是接電話;如果中午要吃飯,那麼我的狀態就變成了吃飯。就是這樣根據條件改變狀態的一種狀態轉移圖的感覺。

 

❹物件(沒記錄)

這裡一開始看比較懵逼,我們先開始正式學習!

 

❶環境配置

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.libglut32.lib

C:\Windows\SysWOW64裡面存放glut.dllglut32.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/

OpenGL 開發環境配置:Visual Studio 2017 + GLFW + GLEW

https://www.cnblogs.com/AnKen/p/8057000.html