win10 環境下配置 openGL的freeglut、glew等庫,使用openGL
- 筆者環境 Visual Studio 2019
一.安裝freeglut
網上的教程大都是項目配置,就是每次建一個新項目還得重新配置,我們來個一步到位
- 首先下載下傳freeglut源碼,并解壓
- 連結: https://pan.baidu.com/s/1uMN5ALlnEmuH_to75Mufrg 提取碼:uwng
請注意,使用此方式配置時,建立一個新項目時無需重新配置。
同時以下教程僅适用于64位系統。
- 找到Visual Studio的編譯器目錄,以我的VS2019預設安裝路徑為例,編譯器目錄為(其他版本VS或者非預設安裝路徑可以以此類推)
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314
- 把freeglut源碼解壓出來的include檔案夾下的GL檔案夾複制到編譯器目錄下的Include目錄下:

-
把freeglut的靜态資料連結庫複制到VS的庫目錄下
将
複制到”lib\x64\freeglut.lib
<編譯器目錄>\lib\x64
”
将lib\ freeglut.lib複制到”<編譯器目錄>\ lib”
-
把freeglut的動态連結庫dll檔案freeglut.dll複制到系統目錄:
将bin\x64\freeglut.dll複制
C:\Windows\System32
**
将bin\freeglut.dll複制到
C:\Windows\SysWOW64
- 配置完成,啟動VS,建立空項目,無需其他額外配置,即可使用。
- 建立一個項目輸入以下代碼測試,如果無誤,即為配置成功
#include <GL/glut.h> void Print() { glClear(GL_COLOR_BUFFER_BIT); glRectf(-0.5f, -0.5f, 0.5f, 0.5f); glFlush(); } int main(int argc, char* argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(0, 100); glutInitWindowSize(800, 600); glutCreateWindow("Hello World!"); glutDisplayFunc(Print); glutMainLoop(); return 0; }
- 對了在編譯的時候注意配置
二.安裝glew
- 下載下傳glew源碼
-
複制到源碼路徑\glew-2.1.0\bin\Release\x64\glew32.dll
c:/windows/system32
- 将glew-2.1.0-win32\glew-2.1.0\lib\Release\x64 下的glew32.lib,glew32s.lib 複制到
保險起見也将上述兩份檔案拷貝到C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\lib
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\lib\x64
-
下面所有檔案 拷貝到glew-2.1.0-win32\glew-2.1.0\include\GL
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\GL
之後要按照這個格式來調用 glut和glew
#include <GL/glew.h>
#include <GL/glut.h>
#pragma comment (lib, "glew32.lib")
void Print()
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(0, 100);
glutInitWindowSize(800, 600);
glutCreateWindow("Hello World!");
glutDisplayFunc(Print);
glutMainLoop();
return 0;
}
這個項目也能順利跑起來的話那麼總的配置就已經完成了,感謝你的閱讀------中北大學張建宏
再加一個有趣的小項目,做最終的環境測試
#include <iostream>
#include <fstream>
#include <vector>
#include <GL/glew.h>
#include <GL/glut.h>
#pragma comment (lib, "glew32.lib")
using namespace std;
class MapPoint
{
public:
double longitude;
double latitude;
};
class Polygona
{
public:
vector<MapPoint> points; //多邊形的頂點序列
};
vector<Polygona*> polys; //多邊形集合
vector <Polygona*> ReadMapData(char* filename)
{
int PointCount;
vector <Polygona*> polygonas;
ifstream fs(filename); //從指定路徑中讀取double類型的資料
while (fs.eof() != true)
{
Polygona* poly = new Polygona;
fs >> PointCount;
cout << PointCount << endl;
for (int i = 0; i < PointCount; i++)
{
MapPoint p;
fs >> p.longitude >> p.latitude;
poly->points.push_back(p); //在尾部加入一個資料
}
polygonas.push_back(poly);
}
return polygonas;
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT); //用藍色色繪制各省邊界
glColor3f(0.0, 0.0, 1.0);
glPolygonMode(GL_BACK, GL_LINE);
for (int i = 0; i < polys.size(); i++)
{
vector<MapPoint> points = polys[i]->points;
glBegin(GL_LINE_LOOP);
for (int j = 0; j < points.size(); j++)
{
glVertex3f(points[j].longitude, points[j].latitude, 0.0);
}
glEnd();
}
glFlush();
}
void init(void)
{
//設定背景顔色
glClearColor(1.0, 1.0, 1.0, 0.0);
//初始化觀察值
glMatrixMode(GL_PROJECTION); //将矩陣模式設為投影
glLoadIdentity(); //對矩陣進行機關化
glOrtho(110.0, 118.0, 30.0, 38.0, -1.0, 1.0); //構造平行投影矩陣
}
int main(int argc, char** argv)
{
// 資料檔案目錄
char* filename = (char*)"D:/2633716446/FileRecv/河南地圖經緯度資料.txt";
polys = ReadMapData(filename);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
//單緩存和RGB
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("地圖繪制");
init();
glutDisplayFunc(display); //顯示回調函數
glutMainLoop();
return 0;
}