OpenGL(預備篇4)---OpenGL程式設計環境配置 vs2017篇---vs2017環境配置---(自己動手系列)
阿新 • • 發佈:2018-12-20
經過前面的準備,需要的檔案已經都有了,現在我們配置環境。首先新建一個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交流。