天天看點

win10 環境下配置 openGL的freeglut、glew等庫,使用openGLwin10 環境下配置 openGL的freeglut、glew等庫,使用openGL

win10 環境下配置 openGL的freeglut、glew等庫,使用openGL

  • 筆者環境 Visual Studio 2019

一.安裝freeglut

網上的教程大都是項目配置,就是每次建一個新項目還得重新配置,我們來個一步到位

請注意,使用此方式配置時,建立一個新項目時無需重新配置。

同時以下教程僅适用于64位系統。

  • 找到Visual Studio的編譯器目錄,以我的VS2019預設安裝路徑為例,編譯器目錄為(其他版本VS或者非預設安裝路徑可以以此類推)
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314           
  • 把freeglut源碼解壓出來的include檔案夾下的GL檔案夾複制到編譯器目錄下的Include目錄下:
win10 環境下配置 openGL的freeglut、glew等庫,使用openGLwin10 環境下配置 openGL的freeglut、glew等庫,使用openGL
win10 環境下配置 openGL的freeglut、glew等庫,使用openGLwin10 環境下配置 openGL的freeglut、glew等庫,使用openGL
win10 環境下配置 openGL的freeglut、glew等庫,使用openGLwin10 環境下配置 openGL的freeglut、glew等庫,使用openGL
  • 把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;
    }
               
  • 對了在編譯的時候注意配置
win10 環境下配置 openGL的freeglut、glew等庫,使用openGLwin10 環境下配置 openGL的freeglut、glew等庫,使用openGL

二.安裝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;
}
           

這個項目也能順利跑起來的話那麼總的配置就已經完成了,感謝你的閱讀------中北大學張建宏

win10 環境下配置 openGL的freeglut、glew等庫,使用openGLwin10 環境下配置 openGL的freeglut、glew等庫,使用openGL

再加一個有趣的小項目,做最終的環境測試

#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;
}
           
win10 環境下配置 openGL的freeglut、glew等庫,使用openGLwin10 環境下配置 openGL的freeglut、glew等庫,使用openGL