OpenGL扩展库基本介绍以及配置(搜集)

声明:此篇仅是个人学习使用,不涉及商业利益,参考众多前辈的资料,会加参考文献,感谢前辈们的宝贵经验,我只是做笔记。


OpenGL有很多扩展库,例如gl、glu、glut、aux、wgl、glfw、glad、glew、freeglut、gltools、sdl、sfml、glx、agl等等


VS配置OpenGL环境

  • 1.确保自己的电脑连上了网
  • 2.打开VS,新建一个空项目,注意项目路径要有效且不含空格
  • 3.按下ctrl+shift+A创建一个源文件
  • 4.写上主函数,F5跑一下看有没有问题
    OpenGL扩展库基本介绍以及配置(搜集)_第1张图片

  • 5.没有问题的话,用VS带的NuGet完成openGL的配置
    OpenGL扩展库基本介绍以及配置(搜集)_第2张图片

  • 6.在下方出现的程序包管理器控制台中输入:Install-Package nupengl.core
    OpenGL扩展库基本介绍以及配置(搜集)_第3张图片

——————-

1.gl–OpenGL核心库[1]

  • 基本介绍
    115个基本函数,以“gl”为前缀,函数用于常规的、核心的图形处理,如建立各种几何模型,产生光照效果,进行反走样及投影变化等。
    核心库中的函数主要可以分为以下几类函数[2]:
分类 举例
绘制基本几何图元 glBegain()、glEnd()、glNormal*()、glVertex*()
矩阵操作、几何变换和投影变换 矩阵入栈函数glPushMatrix()、矩阵出栈 函数glPopMatrix()、装载矩阵函数glLoadMatrix()、矩阵相乘函数glMultMatrix(),当前矩阵函数glMatrixMode()和矩阵标准化函数glLoadIdentity(),几何变换函数glTranslate*()、glRotate*()和glScale*(),投影变换函数glOrtho()、glFrustum()和视口变换函数glViewport()
颜色、光照和材质 颜色模式函数glColor*()、glIndex*(),光照效果的函数glLight*() 、glLightModel*()和材质效果函数glMaterial()
显示列表 创建、结束、生成、删除和调用显示列表的函数glNewList()、 glEndList()、glGenLists()、glCallList()和glDeleteLists()
纹理映射 一维纹理函数glTexImage1D()、二维纹理函数glTexImage2D()、 设置纹理参数glTexParameter*()、纹理环境glTexEnv*()和纹理坐标的函数glTetCoord*()
特殊效果 融合函数glBlendFunc()、反走样函数glHint()和雾化效果glFog*()
光栅化、象素操作 象素位置glRasterPos*()、线型宽度glLineWidth()、多边形绘制模式glPolygonMode(),读取象素glReadPixel()、复制象素glCopyPixel()
选择与反馈 渲染模式glRenderMode()、选择缓冲区glSelectBuffer()和反馈缓冲区glFeedbackBuffer()
曲线与曲面的绘制 生成曲线或曲面的函数glMap*()、glMapGrid*(),求值器的函数glEvalCoord*() glEvalMesh*()
状态设置与查询 glGet*()、glEnable()、glGetError()

2.glu–OpenGL实用程序库[1]

  • 基本介绍
    43个函数,以“glu”为前缀,这些函数通过调用核心库函数,实现较复杂操作,如纹理映射、坐标变化、网格化、曲线曲面绘制以及二次物体(圆柱、球体)绘制等。 主要包括了以下几种[2]:
分类 举例
辅助纹理贴图 gluScaleImage() 、gluBuild1Dmipmaps()、gluBuild2Dmipmaps()
坐标转换和投影变换 定义投影方式函数gluPerspective()、gluOrtho2D() 、gluLookAt(),拾取投影视景体函数gluPickMatrix(),投影矩阵计算gluProject()和 gluUnProject()
多边形镶嵌工具 gluNewTess()、 gluDeleteTess()、gluTessCallback()、gluBeginPolygon() gluTessVertex()、gluNextContour()、gluEndPolygon()
二次曲面绘制工具 绘制球面、锥面、柱面、圆环面gluNewQuadric()、gluSphere()、gluCylinder()、gluDisk()、gluPartialDisk()、gluDeleteQuadric()
非均匀有理B样条绘制工具 定义和绘制Nurbs曲线和曲面,包括gluNewNurbsRenderer()、gluNurbsCurve()、gluBeginSurface()、gluEndSurface()、gluBeginCurve()、gluNurbsProperty()
错误反馈工具 获取出错信息的字符串gluErrorString()

3.glu–OpenGL实用程序工具包[1]

  • 基本介绍
    30多个函数,以“glut”为前缀,提供基于窗口的工具。 如:窗口的初试化、多窗口管理、菜单管理、字体以及较复杂物体的绘制,主要包括了以下几种[2]:
分类 举例
窗口操作 窗口初始化、窗口大小、窗口位置等函数glutInit() glutInitDisplayMode() glutInitWindowSize() glutInitWindowPosition()
回调函数 响应刷新消息、键盘消息、鼠标消息、定时器函数等,GlutDisplayFunc() glutPostRedisplay() glutReshapeFunc() glutTimerFunc() glutKeyboardFunc() glutMouseFunc()
创建复杂的三维物体 创建网状体和实心体。如glutSolidSphere()、glutWireSphere()
菜单函数 创建添加菜单的函数GlutCreateMenu()、glutSetMenu()、glutAddMenuEntry()、glutAddSubMenu() 和glutAttachMenu()
程序运行函数 glutMainLoop()
  • 配置
    (1)下载压缩包http://pan.baidu.com/s/1eRA2EcE;
    (2)解压后得到五个文件,分别为glut.dll、glut32.dll、glut.h、glut.lib、glut32.lib;
    OpenGL扩展库基本介绍以及配置(搜集)_第4张图片
    (3)如果你的VS默认安装路径,则将glut.h文件拷贝至C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\GL中(新建GL文件夹);
    (4)如果你的VS默认安装路径,则将glut.lib、glut32.lib文件拷贝至C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib;
    (5)将glut.dll、glut32.dll文件拷贝至C:\Windows\System32,同时也拷贝至C:\Windows\SysWOW64中,保险;
    (6)glut库配置完毕。

4.aux–OpenGL编程辅助库[1]

  • 基本介绍
    31个函数,以“aux”为前缀,主要用于窗口管理、输入/输出处理以及绘制简单三锥形体,并不能在所有的OpenGL平台上使用,主要包括了以下几种[2]:
分类 举例
窗口初始化和退出函数 auxInitDisplayMode()和auxInitPosition()
窗口处理和时间输入函数 auxReshapeFunc()、auxKeyFunc()和auxMouseFunc()
颜色索引装入函数 auxSetOneColor()
三维物体绘制函数 两种形式网状体和实心体,如绘制立方体auxWireCube()和 auxSolidCube()。以网状体为例,长方体auxWireBox()、环形圆纹面auxWireTorus()、圆柱auxWireCylinder()、二十面体auxWireIcosahedron()、八面体auxWireOctahedron()、四面体auxWireTetrahedron()、十二面体auxWireDodecahedron()、圆锥体auxWireCone()和茶壶auxWireTeapot()

5.wgl–Window专用库[1]

  • 基本介绍
    16个函数,用于连接OpenGL和WindowsNT[2].
分类 具体
绘图上下文相关函数 wglCreateContext(), wglDeleteContext()wglGetCurrentContent() wglGetCurrentDC() wglDeleteContent()
文字和文本处理函数 wglUseFontBitmaps()、wglUseFontOutlines()
覆盖层、地层和主平面层处理函数 wglCopyContext()、wglCreateLayerPlane()、 wglDescribeLayerPlane()、wglReakizeLayerPlatte()
其他函数 wglShareLists()、wglGetProcAddress()

6.glwf[3]

  • 基本介绍

允许我们创建一个OpenGL上下文,定义窗口参数和处理所有我们需要的用户输入,以“glfw”为前缀。

  • 配置
    (1)下载Source包http://www.glfw.org/download.html;
    (2)下载CMake安装包https://cmake.org/download/,并进行安装;
    OpenGL扩展库基本介绍以及配置(搜集)_第5张图片
    (3)安装好CMake后打开CMake,相关设置如下图(build文件夹是新建的);
    OpenGL扩展库基本介绍以及配置(搜集)_第6张图片
    OpenGL扩展库基本介绍以及配置(搜集)_第7张图片
    (4)点击“Generate”后,点击“Open Project”(电脑上安装了vs便用vs打开了),直接点击“本地windows调试器”;
    (5)打开D:\opengl\glfw-3.2.1\build\src\Debug文件夹,将编译成的“glfw3.lib”文件拷贝到C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib中;
    (6)glfw库配置完毕,测试在Glad库配置步骤里。

7.glad[3]

  • 基本介绍
    GLAD是一个开源库,可以管理我们所讨论的所有繁琐的工作。

  • 配置
    (1)先测试自己电脑显卡支持的OpenGL版本,方法参考
    http://blog.csdn.net/so_geili/article/details/51774376;
    (2)GLAD与大多数常见的开源库配置设置略有不同。GLAD使用Web服务(http://glad.dav1d.de/),点开网页设置如下图所示;
    OpenGL扩展库基本介绍以及配置(搜集)_第8张图片
    (3)点开网页中的“GENERATE”,跳转到”GLAD“界面,点击下载压缩包;
    OpenGL扩展库基本介绍以及配置(搜集)_第9张图片
    (4)解压后GLAD有两个文件夹,将include文件夹中的两个文件拷贝至C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\中(注意不是include\GL);将src文件夹中的”glad.c“拷贝至项目中;
    这里写图片描述
    (5)在VS项目属性–>链接器–>输入–>附加依赖项–>编辑–>”opengl32.lib“–>”glfw3.lib”–>确定,将以下代码进行测试,是否链接库成功,如果很多未定义的引用错误,这意味着您没有成功链接GLFW库。

#include 
#include 
int main()
{
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
   return 0;
}

8.gltools

  • 基本介绍
  • 配置
    http://pan.baidu.com/s/1c2esUDq

9.glew

  • 基本介绍
  • 配置
    http://pan.baidu.com/s/1bpnO18V

10.freeglut

  • 基本介绍
  • 配置
    http://pan.baidu.com/s/1qYOBERq

(慢慢来,慢慢积累)

参考文献:
[1]陆枫,何云峰.计算机图形学基础[D],电子工业出版社,2015.
[2]雨琼新星,OpenGL开发库的详细介绍 .http://blog.csdn.net/yqxx/article/details/382519.
[3]Learn OpenGL,https://learnopengl.com.

你可能感兴趣的:(opengl)