1. 程式人生 > >OpenGL(預備篇4)---OpenGL程式設計環境配置 vs2017篇---vs2017環境配置---(自己動手系列)

OpenGL(預備篇4)---OpenGL程式設計環境配置 vs2017篇---vs2017環境配置---(自己動手系列)

經過前面的準備,需要的檔案已經都有了,現在我們配置環境。首先新建一個vs2017工程的空專案,然後新建一個CPP檔案。

之後設定包含路徑,將之前的include路徑新增。

然後設定庫目錄,glew和glfw的lib目錄,因為現在設定的是debug版本的,所以庫目錄也要對應的設定debug版本。

設定好後會這樣。

然後將庫檔名新增進來。 

介於檔名不是很多,我就一個一個的輸入了。

如果檔名很多的時候怎麼辦呢?這裡介紹一個方法。比如說你要配置的庫要這麼多檔名(如下圖)

這要是一個一個的輸入就有些笨拙了。我們在lib所在檔案目錄下建立一個.bat檔案(建議先建立空白.txt然後改成.bat),然後在檔案裡輸入cmd,儲存後開啟如下。我這裡只是隨意用一個目錄來做講解。

之後在裡面輸入命令dir /b *.lib>1.txt

然後就會在當前目錄下得到1.txt檔案,一開啟看裡面。

 

這多好!

之後將OpenGL32.lib也新增到附加項裡這個檔案一般在系統下已經有了,附加進來就好了。

然後再重複上述所有步驟將release版本的環境也配置出來。

配置好後可以用一下程式碼來實驗一下環境是否正確。先別管這段程式碼是什麼意思,接下來會學習相關用法。在執行的時候,會出現缺少glew32d.dll,這個dll檔案是在編譯glew就生成了,在生成資料夾的bin\debug 下,將其複製到vs2017生成的debug版本的exe檔案目錄下即可。

#include<iostream>
#include<GL/glew.h>
#include<GLFW/glfw3.h>
#include<glm/vec3.hpp>
#include<glm/glm.hpp>
using namespace std;
GLuint VAO,VBO;
void CreateVertex()
{
	//設定頂點
	GLfloat vertices[] = { -0.5, -0.5, 0.0,
			        0.5,-0.5, 0.0,
				0.0,0.5,0.0 };
	//申請VAO,VBO
	glGenVertexArrays(1,&VAO);
	glGenBuffers(1,&VBO);
	//繫結VAO,VBO
	glBindVertexArray(VAO);
	glBindBuffer(GL_ARRAY_BUFFER, VBO);
	glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 9, vertices, GL_STATIC_DRAW);
	//設定頂點格式
	glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), 0);
	glEnableVertexAttribArray(0);
	//解綁
	glBindVertexArray(0);
}
void RenderSence()
{
	//清空螢幕
	glClear(GL_COLOR_BUFFER_BIT);
	glBindVertexArray(VAO);
	glDrawArrays(GL_TRIANGLES,0,3);
	glBindVertexArray(0);
}
int main()
{
	//初始化glfw
	glfwInit();
	//設定glfw引數
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//設定OpenGL版本
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//OPENGL核心模式
	glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);//視窗大小不可調整
	GLFWwindow * window = glfwCreateWindow(800, 600, "OpenGL", nullptr, nullptr);
	if (window == nullptr)
	{
		cout << "錯誤0001:建立視窗失敗" << endl;
		return -1;
	}
	glfwMakeContextCurrent(window);//設定視窗上下文
	//輸出GL版本和當前使用著色器
	cout << glGetString(GL_VERSION) << endl;
	cout << glGetString(GL_RENDERER) << endl;
	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
	if (glewInit() != GLEW_OK)
	{
		cout << "錯誤1001:glew初始化錯誤;" << endl;
		return -1;
	}
	//定義視覺範圍大小
	glViewport(0, 0, 800, 600);
	CreateVertex();
	while (!glfwWindowShouldClose(window))
	{
		glfwPollEvents();
		RenderSence();
		glfwSwapBuffers(window);
	}
	return 0;
}

執行成功的效果。 

有問題請留言或者來群417801511交流。