目录

Opengl相关库的配置与安装

关于Opengl的多个库安装与配置

glut库

  • 下载链接:https://user.xmission.com/~nate/glut.html 最好是下载32位的

  • 这个是glut-3.7.6-bin.zip 是已经编译好的文件打包

  • glut文件放置(“mingw\“是你安装mingw的位置)

    • glut文件 放置位置
      glut.h mingw/include 文件夹
      glut32.lib mingw/lib
      glut.dll C:\Windows\SysWOW64 (这个是Windows64位系统的运行环境,不论34位/64位直接放C:\Windows里也可以)
    • 如果有较丰富的库链接经验,可以不放置。在编译链接时自己指定库文件和头文件位置。

      工程/Makefile声明路径就可。

    • 其实还需glu32.dllopengl32.dll 但操作系统一般会自带的。 glu.hglu.hmingw 在安装的时候就会带上一些头文件在 include/GL.

    • 注意:如果是下载的mingw64 (64位)就要放在 mingw-w64\x86_64-w64-mingw32

  • glut库的配置编译/链接参数

    • 我目前主要是用vscode,所以在vscode上的 task.json上配置的(gcc/g++命令行编译同理),但也在vs上配置了,不过没有经常去用。
    • 编译参数:#define GLUT_DISABLE_ATEXIT_HACK (glut设计的缺陷)
    • 链接参数:-lopengl32 -lglu32 -lglut32 -m32(如果是mingw-w64要加上)

+++

freeglut库

  • 下载地址:http://www.transmissionzero.co.uk/software/freeglut-devel/ 点击Download freeglut xxxx for MinGW

  • freeglut文件放置(“mingw\“是你安装mingw的位置)

    • freeglut文件 放置位置
      freeglut.h
      freeglut_ext.h
      freeglut_std.h
      glut.h(与glut的不完全一样)
      mingw/include/GL 文件夹
      libfreeglut.a
      libfreeglut_static.a

      用(32/64)
      mingw/lib
      freeglut.dll
      (32位的mingw就用bin目录下那个,不是bin/x64那个)
      C:\Windows\SysWOW64 (这个是Windows64位系统的运行环境,不论34位/64位直接放C:\Windows里也可以)
  • freeglut库的配置编译/链接参数

    • 编译参数:不需要
    • 链接参数:-lfreeglut -lopengl32 -m32(如果是mingw-w64要加上)

测试程序:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#define GLUT_DISABLE_ATEXIT_HACK
//#define FREEGLUT_STATIC
#include<windows.h>
//windows下必须包含
/* #include<GL/gl.h>
 *#include<GL/glu.h> 
 *这两个被glut.h引用了
 */
#include<stdio.h>
#include<cmath>
#include<cstdlib>
#include<GL/glut.h>
#include<GL/freeglut.h>
//#include<iostream>
GLenum errorCheck()
{  
    const GLubyte *s;
    GLenum code;
    code=glGetError();
    
    
        s=gluErrorString(code);
        printf("%s\n",s);
        //std::cout<<s<<std::endl;
    
    return code;
}
//初始化有关且一次性的函数
void init(){
    //用RGB值设定窗口背景颜色
    //第四个参数是 指定颜色的alpha值,0.0是完全透明,1.0是不透明
    glClearColor(1,1,1,1);
    //以三维观察模式操作处理模型,以正投影将二维区域内容投影
    glMatrixMode(GL_PROJECTION);
    //ortho正交化 将窗口的(0,0)到(200,150)的矩形区域投影到显示窗口上
    gluOrtho2D(0.0,200.0,0.0,150.0);

}
//显示回调函数
void lineSegment(){
    //和glclearColor配合,以GL_COLOR_BUFFER_BIT 常量,指定颜色缓存的位值
    glClear(GL_COLOR_BUFFER_BIT);
    //设定显示的对象的颜色
    glColor3f(0.0,0,0);
    glBegin(GL_LINE_LOOP);
        glVertex2d(80,15);
        glVertex2d(100,80);
        glVertex2d(150,30);
    glEnd();
    //强制清空所有缓存处理opengl函数
    glFlush();
    errorCheck();
}

int main(int argc,char** argv)
{
    //初始化GLUT,可以使用命令行参数变量
    glutInit(&argc,argv);
    /*初始化显示窗口的缓存和颜色模型等选项
     *GLUT_SINGLE : 单个缓存显示
     *GLUT_RGB    : 由RGB三原色组成的颜色
     *以上两个参数都是默认的              */
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

    
    //初始化window窗口的位置
    glutInitWindowPosition(300,200);
    //初始化window窗口的大小
    glutInitWindowSize(400,320);

//TODO:初始化顺序很重要!

    //显示窗口 ,并设定窗口的标题
    glutCreateWindow("An Example openGL Program");

    /*初始化的函数*/
    init();
    //将lineSegment函数传入displayfunc 显示图形几何
    glutDisplayFunc(lineSegment);
    glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_EXIT);
    glutMainLoop();
}

++++

glfw库

  • 下载地址:https://www.glfw.org/download.html 建议下32位

  • GLFW是继GLUT,FreeGLUT之后,当前最新的用来创建OpenGL上下文,以及操作窗口的第三方库。

  • 文件放置不再细说

  • glfw库的配置编译/链接参数

    • 编译参数:GLFW_STATIC/GLFW_DLL
    • 链接参数: -lopengl32 -lwinmm -lgdi32 -lglfw3dll /-lglfw3 -m32(如果是mingw-w64要加上)