OpenGL 函数库相关的API有核心库(gl)、实用库(glu)、辅助库(aux)、实用工具库(glut)、窗口库(glx、agl、wgl)和扩展函数库等.gl是核心,glu是对gl的部分封装。glx、agl、wgl 是针对不同窗口系统的函数。glut是为跨平台的OpenGL程序的工具包,比aux功能强大。扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数。

1.OpenGL核心库
核心库包含有115个函数,函数名的前缀为gl。
 这部分函数用于常规的、核心的图形处理。此函数由gl.dll来负责解释执行。由于许多函数可以接收不同数以下几类。据类型的参数,因此派生出来的函数原形多达300多个。
核心库中的函数主要可以分为以下几类函数:
(1)绘制基本几何图元的函数。如绘制图元的函数glBegain()、glEnd()、glNormal*()、glVertex*()。
(2)矩阵操作、几何变换和投影变换的函数。如矩阵入栈函数glPushMatrix()、矩阵出栈函数glPopMatrix()、装载矩阵函数glLoadMatrix()、矩阵相乘函数glMultMatrix(),当前矩阵函数 glMatrixMode()和矩阵标准化函数glLoadIdentity(),几何变换函数glTranslate*()、glRotate*()和 glScale*(),投影变换函数glOrtho()、glFrustum()和视口变换函数glViewport()等等。
(3)颜色、光照和材质的函数。如设置颜色模式函数glColor*()、glIndex*(),设置光照效果的函数glLight*() 、glLightModel*()和设置材质效果函数glMaterial()等等。
(4)显示列表函数、主要有创建、结束、生成、删除和调用显示列表的函数glNewList()、 glEndList()、glGenLists()、glCallList()和glDeleteLists()。
(5)纹理映射函数,主要有一维纹理函数glTexImage1D()、二维纹理函数glTexImage2D()、 设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、glTexEnv*()和glTetCoord*()等。
(6)特殊效果函数。融合函数glBlendFunc()、反走样函数glHint()和雾化效果glFog*()。
(7)光栅化、象素操作函数。如象素位置glRasterPos*()、线型宽度glLineWidth()、多边形绘制模式glPolygonMode(),读取象素glReadPixel()、复制象素glCopyPixel()等。
(8)选择与反馈函数。主要有渲染模式glRenderMode()、选择缓冲区glSelectBuffer()和反馈缓冲区glFeedbackBuffer()等。
(9)曲线与曲面的绘制函数。生成曲线或曲面的函数glMap*()、glMapGrid*(),求值器的函数glEvalCoord*() glEvalMesh*()。
(10)状态设置与查询函数。主要有glGet*()、glEnable()、glGetError()等。

2.OpenGL实用库The OpenGL Utility Library (GLU)
  包含有43个函数,函数名的前缀为glu。
  OpenGL提供了强大的但是为数不多的绘图命令,所有较复杂的绘图都必须从点。线、面开始。Glu 为了减轻繁重的编程工作,封装了OpenGL函数,Glu函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。此函数由 glu.dll来负责解释执行。OpenGL中的核心库和实用库可以在所有的OpenGL平台上运行。
(1)辅助纹理贴图函数,有gluScaleImage() 、gluBuild1Dmipmaps()、gluBuild2Dmipmaps()。
(2)坐标转换和投影变换函数,定义投影方式函数gluPerspective()、gluOrtho2D() 、gluLookAt(),拾取投影视景体函数gluPickMatrix(),投影矩阵计算gluProject()和 gluUnProject()等等。
(3)多边形镶嵌工具,有gluNewTess()、 gluDeleteTess()、gluTessCallback()、gluBeginPolygon() gluTessVertex()、gluNextContour()、gluEndPolygon()等等。
(4)二次曲面绘制工具,主要有绘制球面、锥面、柱面、圆环面gluNewQuadric()、gluSphere()、gluCylinder()、gluDisk()、gluPartialDisk()、gluDeleteQuadric()等等  (5)非均匀有理B样条绘制工具,主要用来定义和绘制Nurbs曲线和曲面,包括gluNewNurbsRenderer()、 gluNurbsCurve()、gluBeginSurface()、gluEndSurface()、gluBeginCurve()、 gluNurbsProperty()等函数。
(6)错误反馈工具,获取出错信息的字符串gluErrorString()。

3.OpenGL辅助库
  包含有31个函数,函数名前缀为aux。
  这部分函数提供窗口管理、输入输出处理以及绘制一些简单三维物体。此函数由glaux.dll来负责解释执行。创建aux库是为了学习和编写 OpenGL程序,它更像是一个用于测试创意的预备基础接管。Aux库在windows实现有很多错误,因此很容易导致频繁的崩溃。在跨平台的编程实例和演示中,aux很大程度上已经被glut库取代。OpenGL中的辅助库不能在所有的OpenGL平台上运行。
 辅助库函数主要包括以下几类:
(1)窗口初始化和退出函数,auxInitDisplayMode()和auxInitPosition()。
(2)窗口处理和时间输入函数,auxReshapeFunc()、auxKeyFunc()和auxMouseFunc()。
(3)颜色索引装入函数,auxSetOneColor()。
(4)三维物体绘制函数。包括了两种形式网状体和实心体,如绘制立方体auxWireCube()和 auxSolidCube()。这里以网状体为例,长方体auxWireBox()、环形圆纹面auxWireTorus()、圆柱 auxWireCylinder()、二十面体auxWireIcosahedron()、八面体auxWireOctahedron()、四面体 auxWireTetrahedron()、十二面体auxWireDodecahedron()、圆锥体auxWireCone()和茶壶 auxWireTeapot()。
(5)背景过程管理函数auxIdleFunc()。
(6)程序运行函数auxMainLoop()。

4.OpenGL工具库 OpenGL Utility Toolkit
 包含大约30多个函数,函数名前缀为glut。
 glut是不依赖于窗口平台的OpenGL工具包,由Mark KLilgrad在SGI编写(现在在Nvidia),目的是隐藏不同窗口平台API的复杂度。函数以glut开头,它们作为aux库功能更强的替代品,提供更为复杂的绘制功能,此函数由glut.dll来负责解释执行。由于glut中的窗口管理函数是不依赖于运行环境的,因此OpenGL中的工具库可以在X-Window, Windows NT, OS/2等系统下运行,特别适合于开发不需要复杂界面的OpenGL示例程序。对于有经验的程序员来说,一般先用glut理顺3D图形代码,然后再集成为完整的应用程序。

 这部分函数主要包括:
(1)窗口操作函数,窗口初始化、窗口大小、窗口位置等函数glutInit() glutInitDisplayMode() glutInitWindowSize() glutInitWindowPosition()等。
(2)回调函数。响应刷新消息、键盘消息、鼠标消息、定时器函数等,GlutDisplayFunc() glutPostRedisplay() glutReshapeFunc() glutTimerFunc() glutKeyboardFunc() glutMouseFunc()。
(3)创建复杂的三维物体。这些和aux库的函数功能相同。创建网状体和实心体。如glutSolidSphere()、glutWireSphere()等。在此不再叙述。
(4)菜单函数。创建添加菜单的函数GlutCreateMenu()、glutSetMenu()、glutAddMenuEntry()、glutAddSubMenu() 和glutAttachMenu()。
(5)程序运行函数,glutMainLoop()。

转载于:https://blog.51cto.com/tiankefeng/1385518

OpenGL学习一:OpenGL简介相关推荐

  1. 【OpenGL学习】OpenGL介绍

    一.OpenGL是什么? 在早期一般认为OpenGL是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形.图像的函数.然而, ...

  2. IOS OpenGL 学习 (一)

    IOS OpenGL 学习 (一) OpenGL 学习网址 OpenGL 简介 OpenGL 基础理论知识 1. 坐标系与变换 2. OpenGL 显示图形流程 3. OpenGL 基本概念 Open ...

  3. C++ OpenGL学习——入门篇

    本文参考自 opengl学习网站 opengl学习网站中文版 一.什么是OpenGL OpenGL主流上被认为是一个API(一个应用程序程序接口),提供了大量的函数,使用这些函数可以操作图形和图像.但 ...

  4. OpenGL ES之基本简介和渲染流程

    简介 OpenGL ES (OpenGL for Embedded Systems) 是以⼿持和嵌入式为目标的高级3D图形应用程序编程接口(API). OpenGL ES是目前智能手机中占据统治地位的 ...

  5. OpenGL学习笔记——坐标转换

    因为OpenGL中的坐标转换有些复杂,所以做一篇笔记记录一下. 文章目录 一.简介 二.代码实现 2.1简单的测试 2.2旋转测试 三.小结 一.简介 学习OpenGL一段时间之后,数据的坐标转换将会 ...

  6. OpenGL学习(九)阴影映射(shadowMapping)

    目录 写在前面 阴影映射原理简介 封装 Camera 类 帧缓冲 阴影映射 准备工作 创建帧缓冲与深度纹理附件 从光源方向进行渲染 正常地渲染场景 如何查找bug(⚠重要) 多纹理传送 查看深度纹理数 ...

  7. OpenGL学习(十)天空盒

    目录 写在前面 天空盒简介 创建立方体贴图 渲染一个立方体 立方体贴图着色器 开始绘制天空盒 完整代码 着色器 c++ 写在前面 上一篇博客回顾:OpenGL学习(九)阴影映射(shadowMappi ...

  8. 【我的OpenGL学习进阶之旅】【持续更新】关于学习OpenGL的一些资料

    目录 一.相关书籍 OpenGL 方面 C方面 NDK 线性代数 二.相关博客 2.0 一些比较官方的链接 2.1 OpenGL着色器语言相关 2.2 [[yfan]](https://segment ...

  9. OpenGL ES 3.0 简介

    转载请以链接形式标明出处: 本文出自:103style的博客 OpenGL ES 3.0学习汇总 OpenGL ES 3.0 学习记录汇总 简介 OpenGL ES (OpenGL for Ember ...

  10. OpenGL学习之二 -- 初探

    OpenGL学习之二 -- 初探 前言 1. Xcode搭建OpenGL环境 1. 1 搭建步骤 1. 2 写一个最简单的openGL测试代码 1. 3 源码下载 2. 图形API简介 3. Open ...

最新文章

  1. redis源码客户端和服务端通信过程
  2. json解析数组 nlohmann_JSON 数组的遍历解析
  3. 天梯赛-是否完全二叉搜索树
  4. 网址发布页模板,带网址测速+域名检测功能
  5. python获取网页元素坐标_Python实战爬虫系统学习笔记一:解析网页中的元素
  6. 【uiautomator】运行命令
  7. Spark Streaming实时数据分析
  8. 解决oracle11g连接失败 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
  9. Adb refused a command 解决方法
  10. ACL 2022 主会长文论文分类整理
  11. 央行降息 北上广深和厦门南京房价反弹可能性最大
  12. 第六届“蓝帽杯”全国大学生网络安全技能大赛-初赛Writeup
  13. 不同的丘脑皮层网络动力学与慢性腰痛的病理生理学有关
  14. 【面试】Python面试题库
  15. Android RemoteViews----RemoteViews应用
  16. 数据库系统--码,超码,候选码,主属性,非主属性,主码,全码,外码基本概念
  17. 3分钟短文:Laravel的“南天门”,过滤掉七七八八的数据
  18. execute和submit的区别与联系
  19. 关于计算机等级考试的资源网,计算机等级考试计算机网络题库
  20. 40天,编码器效率优化100倍,字节跳动这样拿下国际比赛4项第一

热门文章

  1. Matplotlib Toolkits:地图绘制工具
  2. C/C++集成开发环境搭建
  3. 建立一个中文名字的文件夹Python
  4. python字符串转换为数字_Python不使用int()函数把字符串转换为数字的方法
  5. 电脑wifi热点软件_手机WiFi信号太差怎么办?掌握这些方法,轻松解决这个问题...
  6. 数据结构 二叉树的建立,遍历
  7. Flutter — 实现验证码倒计时功能
  8. Flutter TextField设置默认值默认值和光标位置
  9. (BUG记录)使用迭代器安全的删除处于循环下集合中的元素
  10. ....................................thinkpad E480 用户初体验..............................