標籤:

在Windows 10系統搭建OpenGL調試環境

這篇文章是在經歷過不少次失敗之後,總結出來在win10(64位系統)上搭建32位程序的OpenGL調試環境的步驟與錯誤合輯。算下來基本上把能走的彎路都走遍了_(:з)∠)_所以寫篇文章,一來給自己留個檔案,二來讓其他人少走彎路。

首先強調一下,win10是64位系統的,但直接在win10上面搭建64位的OpenGL環境老是容易出錯,並且網上找32位調試環境的資源和文檔比較方便,所以雖然系統是64位,但調試用的是32位的編譯器。

好了進入正題。使用的集成開發環境是Visual Studio 2015社區版,在此基礎上,需要做三件事:

①安裝freeglut相關的庫

②安裝glew相關的庫

③在Visual Studio 2015中正常運行

先來完成第①步:安裝freeglut。

freeglut可以直接在官方網站下載: The freeglut Project :: About,這裡下載的是freeglut-3.0.0.tar。下載到壓縮包之後,可以參照下面的博文,製作出32位的freeglut資源包:

替Visual Studio量身訂製Freeglut。

需要提醒的是,CMake工具在Config選定編譯器時,需要選定為Visual Studio 14 2015,而不是第三行的Visual Studio 14 2015 Win64。

好了,看到這一步,默認已經按照上面的博客編譯出freeglut的dll、lib庫文件了。此處需要提醒的是,出於穩妥起見,編譯出的freeglutd.dll最好在C:WindowsSystem32與C:WindowsSysWOW64兩個文件夾中都存放一個。原因如下圖,編譯32位程序時,系統仍然會搜索C:WindowsSysWOW64文件夾;而且自己也試過,刪除SysWOW64文件夾中的freeglutd.dll會導致程序編譯不通過(雖然下圖寫的是「無法查找或打開」)。類似的,glew32.dll也需要在64位系統文件夾與32位系統文件夾中分別存放一個。

如果不放,在編譯時系統會報:

以上,第①步就啰嗦到這裡,下面開始第②步glew環境的搭建。glew就貼心多了,官方網站:The OpenGL Extension Wrangler Library 有現成的庫文件,不用自己編譯。下載之後按照官方的說明,把.h頭文件、dll、lib庫放到相應的文件夾:

這裡再贅述一句,glew32.dll除了要放在%SystemRoot%/system32以外,還要給64位的SysWOW64也放置一個。原因和freeglutd.dll差不多,不放的話系統也會報錯。

走到這一步,OpenGL的兩個關鍵性的組件裝好了,下面要開始第③步,在Visual Studio上運行程序。

以為到這裡就沒坑了嘛?不可能的。首先,項目類型需要選擇Win32控制台應用程序,而不是Win32項目。

我自己之前沒注意,一直選定的是Win32 項目,結果在運行代碼時,系統老是報:無法解析的外部符號 _WinMain@16。樣子就是下圖這樣,幸好百度百科有人指點才躲過一劫。

終於把項目建好了,終於可以開始寫自己的OpenGL代碼了。但到了此處,還有2個暗坑等著大家,分別是: 需要在代碼開始的地方引用兩個重要的東西:windows.h與glew32.lib

#include <stdio.h>

#include "stdafx.h"

#include <windows.h>

#include <GL/glew.h>

#include <GL/glut.h>

#pragma comment(lib, "glew32.lib")

上面這兩個加黑的地方,windows.h不加會影響freeglut的運行,glew32.lib不調用會影響glew庫。比如說,將#pragma comment(lib, "glew32.lib")注釋會引起這樣的報錯,glew相關的API都沒法使用。

走到這一步,OpenGL的第一個程序總算是可以出來了。自己的第一個OpenGL圖案是這樣的,截圖紀念(只是畫了一個白點)

最後的最後,推薦一個比較好的OpenGL新手教程:

OpenGL Step by Step

祝看到的人碼運昌隆


推薦閱讀:

現代gl編程一定比傳統固定管線快嗎?
如何評價CSDN學院姜雪偉的《3D遊戲引擎高端實戰培訓》課程?
WebGL 和 OpenGL ES 有什麼區別?
OpenGL ES2 對象樹繪製與 VBO組織問題?
震驚!時間之神又給了這個古老的API+了0.1

TAG:OpenGL |