OpenGL的库函数介绍
GLSL常用内置函数汇总
GLSL常用内置函数汇总GLSL(OpenGL Shading Language)是一种用于编写着色器代码的高级编程语言,主要用于实现图形渲染管线中的着色器功能。
GLSL提供了许多内置函数,用于执行各种常见的数学运算、图形处理和纹理操作。
下面是GLSL常用的内置函数的汇总。
一、数学函数1. sin(x): 返回角度x的正弦值。
2. cos(x): 返回角度x的余弦值。
3. tan(x): 返回角度x的正切值。
4. pow(x, y): 返回x的y次幂。
5. sqrt(x): 返回x的平方根。
6. abs(x): 返回x的绝对值。
7. floor(x): 返回不大于x的最大整数。
8. ceil(x): 返回不小于x的最小整数。
9. mod(x, y): 返回x除以y的余数。
10. min(x, y): 返回x和y中的最小值。
11. max(x, y): 返回x和y中的最大值。
二、向量和矩阵函数1. length(x): 返回向量x的长度。
2. dot(x, y): 返回向量x和y的点积。
3. cross(x, y): 返回向量x和y的叉积。
4. normalize(x): 返回一个与向量x方向相同的单位向量。
三、纹理函数1. texture2D(sampler, coord): 根据指定的纹理坐标从纹理采样器sampler中获取颜色值。
2. textureCube(sampler, coord): 根据指定的纹理坐标从立方体贴图采样器sampler中获取颜色值。
3. texture2DProj(sampler, coord): 根据指定的纹理坐标从投影纹理采样器sampler中获取颜色值。
4. texture2DLod(sampler, coord, level): 根据指定的纹理坐标和LOD级别从纹理采样器sampler中获取颜色值。
5. textureCubeLod(sampler, coord, level): 根据指定的纹理坐标和LOD级别从立方体贴图采样器sampler中获取颜色值。
opengl学习资料收集
OpenGL学习:第一课先了解一下OpenGL中对数据类型的定义,对后面使用一些库函数会有所帮助的。
打开gl.h文件,就可以看到OpenGL定义的一些基本数据类型,如下所示:typedef unsigned int GLenum;typedef unsigned char GLboolean;typedef unsigned int GLbitfield;typedef signed char GLbyte;typedef short GLshort;typedef int GLint;typedef int GLsizei;typedef unsigned char GLubyte;typedef unsigned short GLushort;typedef unsigned int GLuint;typedef float GLfloat;typedef float GLclampf;typedef double GLdouble;typedef double GLclampd;typedef void GLvoid;先从最简单的学习。
点是OpenGL中最基本最简单的图元,它不像数学中的点是要无穷小的,它是有大小的,大小默认为1个像素,但也可以改变。
改变一个点的大小,函数名称为glPointSize,其函数声明如下:WINGDIAPI void APIENTRY glPointSize (GLfloat size);你仍然可以到gl.h中查看该函数的声明。
函数声明中,size是点的大小,默认值为1.0f,单位为“像素”,而且,size 必须要大于0.0f,原因很简单了,如果等于0了,你又怎么能在图形显示设备上看到点的存在呢。
为了学习方便,使用VC 6.0进行调试学习。
首先,新建一个Win32 Console Application,切换到Fileview视图,在Source Files中新建一个C++源文件,然后就可以在这个源文件中进行调试学习。
OpenGL使用手册.
OpenGL函数使用手册(一)OpenGL函数库格式:<库前缀><根命令><可选的参数个数><可选的参数类型> 库前缀有 gl、glu、aux、glut、wgl、glx、agl 等等,1,核心函数库主要可以分为以下几类函数:(1) 绘制基本的几何图元函数。
如:glBegain().(2) 矩阵操作、几何变换和投影变换的函数。
如:矩阵入栈glPushMatrix(),还有矩阵的出栈、转载、相乘,此外还有几何变换函数glTranslate*(),投影变换函数glOrtho()和视口变换函数glViewport()等等。
(3) 颜色、光照和材质函数。
(4) 显示列表函数,主要有创建、结束、生成、删除和调用显示列表的函数glNewList()、glEndList()、glGenLists()、glDeleteLists()和glCallList()。
(5) 纹理映射函数,主要有一维和二维纹理函数,设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、glTexEnv*()和glTetCoord*()等。
(6) 特殊效果函数。
(7) 选着和反馈函数。
(8) 曲线与曲面的绘制函数。
(9) 状态设置与查询函数。
(10) 光栅化、像素函数。
2,OpenGL实用库(The OpenGL Utility Library)(GLU)包含有43个函数,函数名的前缀名为glu.(1) 辅助纹理贴图函数。
(2) 坐标转换和投影变换函数。
(3) 多边形镶嵌工具。
(4) 二次曲面绘制工具。
(5) 非均匀有理B样条绘制工具。
(6) 错误反馈工具,获取出错信息的字符串gluErrorString() 3,OpenGL辅助库包含有31个函数,函数名前缀名为aux这部分函数提供窗口管理、输入输出处理以及绘制一些简单的三维物体。
4,OpenGL工具库(OpenGL Utility Toolkit)包含大约30多个函数,函数前缀名为glut,此函数由glut.dll来负责解释执行。
OpenGL库函数一览表
OpenGL库函数列表OpenGl核心函数库glAccum 操作累加缓冲区glAddSwapHintRectWIN 定义一组被SwapBuffers拷贝的三角形glAlphaFunc允许设置alpha检测功能glAreTexturesResident 决定特定的纹理对象是否常驻在纹理内存中glArrayElement 定义一个被用于顶点渲染的数组成分glBegin,glEnd 定义一个或一组原始的顶点glBindTexture 允许建立一个绑定到目标纹理的有名称的纹理glBitmap 绘制一个位图glBlendFunc 特殊的像素算法glCallList 执行一个显示列表glCallLists 执行一列显示列表glClear 用当前值清除缓冲区GlClearAccum 为累加缓冲区指定用于清除的值glClearColor 为色彩缓冲区指定用于清除的值glClearDepth 为深度缓冲区指定用于清除的值glClearStencil 为模板缓冲区指定用于清除的值glClipPlane 定义被裁剪的一个平面几何体glColor 设置当前色彩glColorMask 允许或不允许写色彩组件帧缓冲区glColorMaterial 使一个材质色彩指向当前的色彩glColorPointer 定义一列色彩glColorTableEXT 定义目的一个调色板纹理的调色板的格式和尺寸glColorSubTableEXT 定义目的纹理的调色板的一部分被替换glCopyPixels 拷贝帧缓冲区里的像素glCopyTexImage1D 将像素从帧缓冲区拷贝到一个单空间纹理图象中glCopyTexImage2D 将像素从帧缓冲区拷贝到一个双空间纹理图象中glCopyTexSubImage1D 从帧缓冲区拷贝一个单空间纹理的子图象glCopyTexSubImage2D 从帧缓冲区拷贝一个双空间纹理的子图象glCullFace 定义前面或后面是否能被精选glDeleteLists 删除相邻一组显示列表glDeleteTextures 删除命名的纹理glDepthFunc 定义用于深度缓冲区对照的数据glDepthMask 允许或不允许写入深度缓冲区glDepthRange 定义z值从标准的设备坐标映射到窗口坐标glDrawArrays 定义渲染多个图元glDrawBuffer 定义选择哪个色彩缓冲区被绘制glDrawElements 渲染数组数据中的图元glDrawPixels 将一组像素写入帧缓冲区glEdgeFlag 定义一个边缘标志数组glEdgeFlagPointer 定义一个边缘标志数组glEnable, glDisable 打开或关闭OpenGL的特殊功能glEnableClientState,glDisableClientState 分别打开或关闭数组glEvalCoord 求解一维和二维贴图glEvalMesh1,glEvalMesh2 求解一维和二维点或线的网格glEvalPoint1,glEvalPoint2 生成及求解一个网格中的单点glFeedbackBuffer 控制反馈模式glFinish 等待直到OpenGL执行结束glFlush 在有限的时间里强制OpenGL的执行glFogf,glFogi,glFogfv,glFogiv 定义雾参数glFrontFace 定义多边形的前面和背面glFrustum 当前矩阵乘上透视矩阵glGenLists 生成一组空的连续的显示列表glGenTextures 生成纹理名称glGetBooleanv,glGetDoublev,glGetFloatv,glGetIntegerv 返回值或所选参数值glGetClipPlane 返回特定裁减面的系数glGetColorTableEXT 从当前目标纹理调色板得到颜色表数据glGetColorTableParameterfvEXT,glGetColorTableParameterivEXT 从颜色表中得到调色板参数glGetError 返回错误消息glGetLightfv,glGetLightiv 返回光源参数值glGetMapdv,glGetMapfv,glGetMapiv 返回求值程序参数glGetMaterialfv,glGetMaterialiv 返回材质参数glGetPixelMapfv,glGetpixelMapuiv,glGetpixelMapusv 返回特定的像素图glGetPointerv 返回顶点数据数组的地址glGetPolygonStipple 返回多边形的点图案glGetString 返回描述当前OpenGl连接的字符串glGetTexEnvfv 返回纹理环境参数glGetTexGendv,glGetTexGenfv,glGetTexGeniv 返回纹理坐标生成参数glGetTexImage 返回一个纹理图象glGetTexLevelParameterfv,glGetTexLevelParameteriv 返回特定的纹理参数的细节级别glGetTexParameterfv,glGetTexParameteriv 返回纹理参数值glHint 定义实现特殊的线索glIndex 建立当前的色彩索引glIndexMask 控制写色彩索引缓冲区里的单独位GlIndexPointer 定义一个颜色索引数组glInitName 初始化名字堆栈glInterleavedArrays 同时定义和允许几个在一个大的数组集合里的交替数组glIsEnabled 定义性能是否被允许glIsList 检测显示列表的存在glIsTexture 确定一个名字对应一个纹理glLightf,glLighti,glLightfv,glLightiv 设置光源参数glLightModelf,glLightModeli,glLightModelfv,glLightModeliv 设置光线模型参数glLineStipple 设定线点绘图案glLineWidth 设定光栅线段的宽glListBase 为glcallList设定显示列表的基础glLoadIdentity 用恒等矩阵替换当前矩阵glLoadMatrixd,glLoadMatrif 用一个任意矩阵替换当前矩阵glLoadName 将一个名字调入名字堆栈glLogicOp 为色彩索引渲染定义一个逻辑像素操作glMap1d,glMap1f 定义一个一维求值程序glMap2d,glMap2f 定义一个二维求值程序glMapGrid1d,glMapGrid1f,glMapgrid2d,glMapGrid2f 定义一个一维或二维网格glMaterialf,glMateriali,glMateriafv,glMaterialiv 为光照模型定义材质参数glMatrixMode 定义哪一个矩阵是当前矩阵glMultMatrixd,glMultMatrixf 用当前矩阵与任意矩阵相乘glNewList,glEndList 创建或替换一个显示列表glNormal 设定当前顶点法向glNormalPointer 设定一个法向数组glOrtho 用垂直矩阵与当前矩阵相乘glPassThrough 在反馈缓冲区做记号glPixelMapfv,glPixelMapuiv,glPixelMapusv 设定像素交换图glPixelStoref,glpixelStorei 设定像素存储模式glPixelTransferf,glPixelTransferi 设定像素存储模式glPixelZoom 设定像素缩放因数glPointSize 设定光栅点的直径glPolygonMode 选择一个多边形的光栅模式glPolygonOffset 设定OpenGL用于计算深度值的比例和单元glPolygonStipple 设定多边形填充图案glPrioritizeTextures 设定纹理固定的优先级glPushAttrib,glPopAttrib 属性堆栈的压入和弹出操作glPushClientAttrib,glPopClientAttrib 在客户属性堆栈存储和恢复客户状态值glPushmatrix,glPopMatrix 矩阵堆栈的压入和弹出操作glPushName,glPopName 名字堆栈的压入和弹出操作glRasterPos 定义像素操作的光栅位置glreadBuffer 为像素选择一个源色彩缓冲区glReadPixels 从帧缓冲区读取一组数据glRectd,glRectf,glRecti,glRects,glRectdv,glRectfv,glRectiv,glRectsv 绘制一个三角形glRenderMode定义光栅模式glRotated,glRotatef 将旋转矩阵与当前矩阵相乘glScaled,glScalef 将一般的比例矩阵与当前矩阵相乘glScissor 定义裁减框glSelectBuffer 为选择模式值建立一个缓冲区glShadeModel 选择平直或平滑着色glStencilFunc 为模板测试设置功能和参照值glStencilMask 控制在模板面写单独的位glStencilOp 设置激活模式测试glTexCoord 设置当前纹理坐标glTexCoordPointer 定义一个纹理坐标数组glTexEnvf,glTexEnvi,glTexEnvfv,glTexEnviv 设定纹理坐标环境参数glTexGend,glTexgenf,glTexGendv,glTexGenfv,glTexGeniv 控制纹理坐标的生成glTexImage1D 定义一个一维的纹理图象glTexImage2D 定义一个二维的纹理图glTexParameterf,glTexParameteri,glTexParameterfv,glTexParameteriv 设置纹理参数glTexSubImage1D 定义一个存在的一维纹理图像的一部分,但不能定义新的纹理glTexSubImage2D 定义一个存在的二维纹理图像的一部分,但不能定义新的纹理glTranslated,glTranslatef 将变换矩阵与当前矩阵相乘glVertex 定义一个顶点glVertexPointer 设定一个顶点数据数组glViewport 设置视窗[OpenGL应用函数库]gluBeginCurve,gluEndCurve 定义一条不一至的有理的NURBS曲线gluBeginPolygon,gluEndPolygon 定义一个非凸多边形gluBeginSurface,gluEndSurface 定义一个NURBS曲线gluBeginTrim,gluEndTrim 定义一个NURBS整理循环gluBuild1Dmipmaps 建立一维多重映射gluBuild2Dmipmaps 建立二维多重映射gluCylinder 绘制一个圆柱gluDeleteNurbsRenderer 删除一个NURBS对象gluDeleQuadric 删除一个二次曲面对象gluDeleteTess 删除一个镶嵌对象gluDisk 绘制一个盘子gluErrorString 根据OpenGL或GLU错误代码产生错误字符串gluGetNutbsProperty 得到一个NURBS属性gluGetString 得到一个描述GLU版本号或支持GLU扩展调用的字符串gluGetTessProperty 得到一个镶嵌对象gluLoadSamplingMatrices 加载NUMRBS例子和精选矩阵gluLookAt 设定一个变换视点gluNewNurbsRenderer 创建一个NURBS对象gluNewQuadric 建立一个二次曲面对象gluNewTess 建立一个镶嵌对象gluNextContour 为其他轮廓的开始做标记gluNurbsCallback 为NURBS对象设定一个回调gluNnrbsCurve 设定一个NuRBS曲线的形状gluNurbsProperty 设定一个NURBS属性gluNurbsSurface 定义一个NURBS表面的形状gluOrtho2D 定义一个二位正交投影矩阵gluPartialDisk 绘制一个盘子的弧gluPerspective 设置一个透视投影矩阵gluPickMatrix 定义一个拾取区间gluProject 将对象坐标映射为窗口坐标gluPwlCurve 描述一个分段线性NURBS修剪曲线gluQuadricCallback 为二次曲面对象定义一个回调gluQuadricDrawStyle 为二次曲面设定合适的绘制风格gluQuadricNormals 定义二次曲面所用的法向的种类gluQuadricOrientation 定义二次曲面内部或外部方向gluQuadricTexture 定义是否带二次其面做纹理帖图gluScaleImage 将图象变换为任意尺寸gluSphere 绘制一个球体gluTessBeginContour,gluTessEndContour 划定一个边界描述gluTessBeginPolygon,gluTessEndPolygon 划定一个多边形描述gluTessCallback 为镶嵌对象定义一个回调gluTessNormal 为一个多边行形定义法向gluTessProperty 设置镶嵌对象的属性gluTessVertex 定义在一个多边形上的顶点gluUnProject 将窗口坐标映射为对象坐标一:GL库函数使用颜色glshadeModel--选择平面明暗模式或光滑明暗模式glColor--设置当前颜色glColorPointer--定义颜色数组gllndex--设置当前颜色索引gllndexPointer--定义颜色索引数组glCOforTableEXT--为目标调色板纹理指定调色板的格式和大小glColorsubTableEXT--指定需要替代的目标纹理调色板的一部分绘制几何图原及物体glVertex--指定顶点glVertexPointer--定义顶点数据数组glArrayElement--指定用来绘制顶点的数组元素glBegin,glEnd--限定一个或多个图原顶点的绘制glEdgeFlag,glEdgeFlagy--指定边界标记glPointsize--指定光栅化点的直径glLinewidth--指定光栅化直线的宽度glLinestipple--指定点划线glPolygonMode--选择多边形光栅化模式glFrontFace--定义正面多边形和反反面多边形glPolygonstipple--设置多边形点划图glDrawElements--从数组数据绘制图原glRect--绘制矩形坐标转换glTranslate--用平移矩阵乘以当前矩阵glRotate--用旋转矩阵乘以当前矩阵glscale--用缩放矩阵乘以当前矩阵glViewport--设置机口glFrustum--用透视矩阵乘以当前矩阵glorthO--用正视矩阵乘以当前矩阵glClipPlane--指定切割几何物体的平面堆栈操作glLoadMatrix--用任意矩阵替换当前矩阵glMultMatrix--用任意矩阵乘以当前矩阵glMatrixMode--指定哪一个矩阵是当前矩阵glPushMatrix,glPopMatrix--压人和弹出当前矩阵堆栈glPushAttrib,glPopAttrib--压人和弹出属性堆栈glPushClientAttrib,glPopClientAttrib--在客户属性堆栈中保存和恢复客户状态变量组glPushName,gPopName--压人和弹出名称堆栈gllnitNames--初始名称堆栈glLoadName--向名称堆栈中装载名称显示列表glNewList,glEndList--创建或替换一个显示列表glCallLISt--执行一个显示列表glCallLISts--执行一列显示列表glGenLists--生成一组空的相邻的显示列表glDeleteLists--删除一组相邻的显示列表gllSLISt--检验显示列表的存在使用光照和材质glNormal--设置当前的法向量glNormalPointer--定义法向量数组glLight--设置光源参数glLightModel--设置光照模型参数glMaterial--为光照模型指定材质参数glColorMateria--使材质颜色跟踪当前颜色像素操作glRasterPos--为像素操作指定光栅位置glBitmap--绘制位图glReadPixels--从帧缓存中读取一块像素glDrawPixels--将一个像素块写人帧缓存glCopyPixels--在帧缓存中拷贝像素glCopyTexlmage1D--将像素从帧缓存拷贝到一维纹理图像中glCopyTexlmageZD--把像素从帧缓存拷贝到二维纹理图像中glCopyTexsublmagelD--从帧缓存中拷贝一维纹理图像的子图像glCopyTexsublmageZD--从帧缓存中拷贝二维纹理图像的子图像glPixelZoom--指定像素缩放因子glPixelstore--设置像素存储模式glPixelTransfer--设置像素传输模式glPixelMap--设置像素传输映射表纹理映射glTexlmagelD--指定一维纹理图像glTexlmageZD--指定二维纹理映射glTexParameter--设置纹理参数glTexsublmage1D--指定已存在的一维纹理图像的一部分glTexsublmageZD--指定已存在的二维纹理图像的一部分glTexEnv--设置纹理环境参数glTexCoord--设置当前纹理坐标glTexGen--控制纹理坐标的生成glTexCoordPointer--定义纹理坐标数组glDeleteTextures--删除命名的纹理特殊效果操作glBlendFunc--指定像素的数学算法glHint--指定由实现确定的控制行为glFOg--指定雾化参数帧缓存操作glClear--将缓存清除为预先的设置值glClearAccum--设置累加缓存的清除值glClearColor--设置颜色缓存的清除值glClearDepth--设置深度缓存的清除值glClearlndex--设置颜色索引缓存的清除值glClearstencil--设置模板缓存的清除值glDrawBuffer--指定绘制的颜色缓存gllndexMask--控制颜色索引缓存中单个位的写操作glColorMask--激活或关闭帧缓存颜色分量的写操作glDepthMask--激活或关闭对深度缓存的写操作glstencilMask--控制模板平面中单个位的写操作glAlphaFunc-一指定alpha检验函数glstencilFunc--设置模板检验函数和参考值glstencilop--设置模板检验操作glDepthFunc--指定深度比较中使用的数值glDepthRange--指定从单位化的设备坐标到窗口坐标的z值映射glLOgiCOp--为颜色索引绘制指定逻辑像素操作glACCum--对累加缓存进行操作绘制曲线和曲面glEvalCoord--求取激活的一维和二维纹理图glMapl--定义一维求值器glMapZ--定义二维求值器glMapGrid--定义一维或二维网格glEvalMesh--计算一维或二维点网格或线网格glEvalPoint--生成并求取网格中的单个点查询函数glGet--返回所选择的参数值glGetClipPlane--返回指定的切平面系数glGetColorTableEXT--获得当前目标纹理调色板的颜色表数据glGetColorTableParameterfvEXT,glGetColorTableParameterlvEXT-从颜色表中获得调色板参数glGetError--返回错误信息glGetLight--返回光源参数值glGetMap--返回求值器参数glGetMaterial--返回材质参数glGetPixelMap--返回指定的像素映像glGetPointery--返回顶点数据数组地JglGetPolygonstipple--返回多边形点戈glGetstring--返回描述当前OpenGLglGetTexEnv--返回纹理环境参数glGetTexGen--返回纹理坐标生成参数glGetTexlmage--返回纹理图像glGetTexLevelParameter--返回指定细节水平的纹理参数值glGetTexParameter--返回纹理参数值二:GLU库函数绘制NURBS曲线和曲面gluNewNurbsRenderer--创建一个NURBS对像gluNurbsProperty--设置NURBS属性gluNurbsCallback--为NURBS对像定义回调函数gluBeginCurve,gluEndCurve--限定NURBS曲线的定义gluNurbsCurve--定义NURBS曲线的形状gluDeleteNurbsRenderer--删除NURBS对像gluBeglnsurface,gluEndsurface--限定NURBS曲面的定义ghiNurbssurface--定义NURBS曲面的形状gluBeginTrim,gluEndTrim--限定NURBS裁剪环的定义gluPwlCurve--描述分段线性NURBS裁剪曲线gfuBeglnPolygon, gluEndPolygon--限定多边形的定义gluPickMatrix--定义拾取区域绘制二次几何物体gluNewQuadric--创建一个二次对象gluQuadricDrawsope--指定二次对象的绘制方式gluQuadricNormals--指定二次对象使用的法向量类型gluQuadricorientation--指定二次对象的内侧面或外侧面方向gluCylinder--绘制圆柱体ghisphere--绘制球体glllDISk--绘制圆盘gluPartialDisk--绘制部分圆盘gliJDeleteQuadric--删除二次对象gluQuadricTexture--指定是否为二次对象使用纹理ghiQuadricCallback--为二次对象定义回调网格化gluNewTess--创建一个网格化对象gluTessVertex--在多边形上指定顶点gluTessCallback--为网格化对象定义回调gluTessBeglnPolygon,ghiTessEndPolygon--限定多边形的描述gluTessBeglnContour,gluTessEndContour--限定多边形轮廓线的定义gluTessProperty--设置网格化对象的属性ghiNextContour--标记开始绘制另一个轮廓线gluTessNormal--为多边形指定法向量gluDeleteTess--删除网格化对象坐标变换gluOorthoZD--定义二维正视投影矩阵gluPerspective--创建透视投影矩阵gltlLOOkAt--定义视景转换gluProject--将物体坐标映射为窗口坐标gluInProject--将窗口坐标映射力物体坐标多重映射gfuBuildlDMipmaps--创建一维多重映射gluBuildZDMipmaps--创建H维多重映射gluSCalelmage--将图像缩放到任意尺寸查询函数ghiErrorstring--从OpenGL或GLU错误代码中生成错误字符串gluGetNurbsProperty--获得NURBS属性ghiGetstring--获得描述GLU版本号或支持GLU扩展调用的字符串ghiGetTessProperty--获得网格化对象的属性三:GLUT库函数初始化和启动事件处理ghjtlnit--初始化GLUT库glutlnitwindowPosition--设置初始窗口位置glutlnitwindowsize--设置初始窗口大小glutlnitDisplayMode--设置初始显示模式glutMainLoop--进人GLUT事件处理循环窗口管理glutCreatewindow--创建顶层窗口glutCreatesubwindow--创建子窗口ghitHidewindow--隐藏当前窗口的显示状态glutshowwindow--改变当前窗口的显示状态,使其显示gfutsetwindowTitle--设置当前顶层窗口的窗口标题ghitsetlconTitle--设置当前顶层窗口的图标标题ghitPostRedisplay--标记当前窗口需要重新绘制glutswapBuffers--交换当前窗口的缓存glutFullscreen--关闭全屏显示glutPositionwindow--申请改变当前窗口的位置gintReshapewindow--申请改变当前窗口的大小glutsetwindow--设置当前窗口ghitGetwindow--获得当前窗口的标识符glutPopwindow--改变当前窗口的位置,使其前移ghitPtshwilldOO--改变当前窗口的位置,使其后移glutDestroywindow--销毁指定的窗口glutlconifywindow--使当前窗口图标化显示glutsetCursor--设置当前窗口的鼠标形状重叠层管理glutEstablishoverlay--创建当前窗口的重叠层glutUseLayer--改变当前窗口的使用层glutRemoveoverlay--删除当前窗口的重叠层glutPostoverlayRedisplay--标记当前窗口的重叠层需要重新绘制glutshowoverlay--显示当前窗口的重叠层glutHideoverlay--显示当前窗口的重叠层菜单管理glutCreateMenu--创建一个新的弹出式菜单glutAddMenuEntry--在当前菜单的底部增加一个菜单条目glutAddsubMenu--在当前菜单的底部增加一个子菜单触发条目glutAttachMenu--把当前窗口的一个鼠标按键与当前菜单的标识符联系起来glutGetMenu--获取当前菜单的标识符glutsetMenu--设置当前菜单glutDestroyMenu--删除指定的菜单glutChangeToMenuEntry--将指定的当前菜单中的菜单项更改为菜单条目glutChangeTosubMenu--将指定的当前菜单中的菜单项更改为子菜单触发条目glutRemoveMenultem--删除指定的菜单项glutDetachMenu--释放当前窗口的一个鼠标按键注册国调函数glutDispfayFunc--注册当前窗口的显示回调函数glutReshapeFunc--注册当前窗口的形状变化回调函数glutMouseFunc--注册当前窗口的鼠标回调函数glutMotionFunc--设置移动回调函数glutldleFunc--设置全局的空闲回调函数glutVisibilityFunc--设置当前窗口的可视回调函数glutKeyboardFunc--注册当前窗口的键盘回调函数glutspecialFunc--设置当前窗口的特定键回调函数glutoverlayDisplayFunc--注册当前窗口的重叠层显示回调函数glutPassiveMotionFunc--设置当前窗口的被动移动回调函数glutEntryFunc--设置当前窗口的鼠标进出回调函数glutspaceballMotionFunc--设置当前窗口的空间球移动回调函数glutspaceballRotateFunc--设置当前窗口的空间球旋转回调函数glutspaceballButtonFunc--设置当前窗口的空间球按键回调函数glutButtonBoxFunc--设置当前窗口的拨号按键盒按键回调函数glutDialsFunc--设置当前窗口的拨号按键盒拨号回调函数glutTabletMotionFunc--设置图形板移动回调函数glutTabletButtonFunc--设置当前窗口的图形板按键回调函数glutMenustatusFunc--设置全局的菜单状态回调函数glutTimerFunc--注册按一定时间间隔触发的定时器回调函数颜色素引映射表管理glutsetColor--设置当前窗口当前层一个颜色表单元的颜色glutGetColor--获得指定的索引颜色glutCopyColormap--将逻辑颜色表从指定的窗口拷贝到当前窗口状态检索glutGet--检索指定的GLUT状态glutLayerGet--检索属于当前窗口重叠层的 GLU T状态glutDeviceGet--检索GLUT设备信息glutGetModifiers--返回修饰键在引起某些回调的事件发生时的状态glutExtensionsupported--判别当前OpenGL版本是否支持给定的OpenGL 扩展字体绘制glutBltmapCharcter--绘制一个位图字符glutBitmapwidth--返回一个位图字符的宽度glutstrokeCharcter--绘制一个笔画字符glutstrokewidth--返回一个笔画字体的宽度几何图形绘制glutSolidsphere,glutwiresphere--绘制实心球体和线框球体glutsolidCube,glutwireCube--绘制实心立方体和线框立方体glutsolidCone,glutwireCone--绘制实心圆锥体和线框圆锥体glutsolidTorus,glutwireTorus--绘制实心圆环和线框圆环glutSolidDOdeCahedroll,glLltwiFeDOdechedfotl--绘制实心十二面体和线框十二面体glutSolidOctahedron,glutWireOctahedron--绘制买心八面体和线框八面体glutsolldTetrahedron,glutwireTetrahedron--绘制实心四面体和线框四面体glutSollelcosahedron,glutwirelcosahedron--绘制实心二十面体和线框二十面体glutsolidTeapot,glutwireTeapot--绘制实心茶壶和线框茶壶glut库下的所有函数:[全部展开/还原]一、初始化void glutInit(int* argc,char** argv)这个函数用来初始化GLUT库。
OpenGL介绍与编程入门
OpenGL编程入门什么是OpenGL•是一个功能强大的图形库,用户可以很方便地开发所需要地有多种特殊视觉(如光照,纹理,透明,阴影)的三维图形。
•与软硬件平台无关的三维图形软件包,可运行于多种窗口系统之上•包含图元生成、投影、光照、光栅化等图形显示过程所需的功能OpenGL的组成•OpenGL实用库–实用函数43个–函数以glu开头–例:gluPerspective();–完成更高层的图形处理如曲线曲面的生成、图象操作等•OpenGL辅助库–包括函数31个–函数以aux开头–例:auxInitWindow();–主要用于窗口管理–OpenGL(Open Graphics Library)是图形硬件的一个软件接口,也是该领域的工业标准。
图形程序员利用这些指令可以创建高质量的交互式的三维应用。
OpenGL的前身是SGI(Silicon Graphics)公司为其图形工作站开发的IRIS GL。
IRIS GL虽然功能强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。
OpenGL是一个与硬件无关的软件接口。
可以在不同的平台如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。
因此,支持OpenGL 的软件具有很好的移植性,可以获得非常广泛的应用。
OpenGL是网络透明的,具有网络功能。
即便客户机和服务器是不同类型的计算机OpenGL程序也可以在网络上运行。
这一点对于制作大型3D图形、动画非常有用。
例如,《玩具总动员》、《泰坦尼克》等电影的电脑特技画面就是通过应用OpenGL的网络功能,使用120多台图形工作站共同工作来完成的。
OpenGL的发展一直处于一种较为迟缓的态势,每次版本的提高新增的技术很少,大多只是对其中部分做出修改和完善。
随着DirectX的不断发展和完善,OpenGL的优势逐渐丧失,至今虽然已有3Dlabs提倡开发的2.0版本面世,在其中加入了很多类似于DirectX中可编程单元的设计,但厂商的用户认知程度并不高,未来的OpenGL发展前景迷茫。
关于OpenGL的各函数的介绍
我的android——OpenGL(2)——gl10方法解析javax.microedition.khronos.opengles接口GL10上级接口:GL下级接口:GL11公共接口GL10继承于GLGL10接口包含了Java(TM)程序语言为OpenGL绑定的核心功能。
OES_byte_coordinates,OES_single_precision,OES_fixed_point,OES_read_format,以及OES_compressed_paletted_texture等扩展功能也是这个接口的一部分。
一个以x或xv为后缀的方法是属于OES_fixed_point扩展功能的,并且需要一个或更多的修正的点为参数。
这些修正的点可能是浮点点派生出来的值通过乘以65536后再取最接近整数得到。
为了使用方便起见,这个接口记录了OpenGL ES各版本包括1.1及其扩展版本的方法。
当运行一个OpenGL ES 1.0的应用程序时,被标为―(仅1.1)‖可以被忽略。
查看GL接口描述,了解如何获取该接口实例。
方法的详细描述:glActiveTexturepublic void glActiveTexture(int texture)功能:选择服务端活动的纹理单元详细:glActiveTexture选择哪一个纹理在后面的纹理状态改变时有效,纹理单元的数量是依据该纹理单元所被支持的具体实现。
在OpenGL ES 1.0中至少一个,在OpenGL ES 1.1中至少两个。
注意:常常会这样GL_TEXTURE i = GL_TEXTURE0 + i一个纹理单元由纹理可用状态、纹理矩阵堆、纹理环境以及当前渲染纹理组成。
修改其中任一成分均会改变当前活动纹理单元。
点阵是客户端GL资源,它通过glClientActiveTexture程序获取。
错误:当0<= i < GL_MAX_TEXTURE_UNITS 时,如果纹理不是一个GL_TEXTURE i,GL_INVALID_ENUM(错误枚举)会产生。
glaccumamt函数作用
glaccumamt函数作用
glAccum()函数是OpenGL中的一个函数,它用于实现累积缓冲区的操作。
累积缓冲区是一种特殊的颜色缓冲区,它可以用于在多次渲染操作之间保存结果,并将它们相加、平均或混合起来,从而产生更复杂的效果。
glAccum()函数的作用是将当前帧缓冲区中的内容与累积缓冲区中的内容相加,并将结果存储回累积缓冲区。
这个函数接受两个参数,第一个参数指定了累积操作的类型,可以是GL_ACCUM、
GL_LOAD、GL_ADD、GL_MULT或GL_RETURN;第二个参数是一个浮点数,用于指定累积因子。
当累积操作类型为GL_ACCUM时,将当前帧缓冲区的内容乘以累积因子,并加到累积缓冲区的对应像素上。
当累积操作类型为GL_LOAD时,将当前帧缓冲区的内容直接复制到累积缓冲区中。
当累积操作类型为GL_ADD时,将当前帧缓冲区的内容与累积缓冲区的内容相加,并将结果存储回累积缓冲区。
当累积操作类型为GL_MULT时,将当前帧缓冲区的内容与累积缓冲区的内容相乘,并将结果存储回累积缓冲区。
当累积操作类型为GL_RETURN时,将累积缓冲区的内容复制回当前帧缓冲区。
通过使用glAccum()函数,我们可以实现一些特殊的效果,如模糊、混合、积分等。
累积缓冲区可以用于实现后期处理、动态模糊、运动模糊等图形效果,从而增加图形的真实感和视觉效果。
需要注意的是,glAccum()函数的使用需要搭配其他OpenGL函数和渲染流程来实现具体的效果,具体的实现方式和效果效果取决于开发者的需求和创造力。
OpenGL函数简介
附录A OpenGL函数简介OpenGL是国际公认的在计算机中使用广泛、易学易用的三维图形标准,附录A给出了本教材所用OpenGL函数的简单说明(/documentation/manual/),供读者查询使用。
1.glAccumvoid glAccum ( GLenum op , GLfloat value );参数说明:op 取符号:GL_ACCUM,GL_LOAD,GL_ADD,GL_MULT,GL_RETURN。
value 取一个浮点数,op决定怎样使用value。
功能描述:按参数op指定的方式,在累积缓冲区中进行如下操作GL_ACCUM 从当前选定的缓冲区(缺省值为当前的颜色缓冲区)中逐点读取其R、G、B、A值,该RGBA乘以value加上累积缓冲区中的当前值后,再存入累积缓冲区中保存。
GL_LOAD 从当前选定的缓冲区中逐点读取其R、G、B、A值,该RGBA乘以value 后,再存入累积缓冲区中保存。
GL_ADD 将value直接加到累积缓冲区中每点的RGBA上。
GL_MULT 略。
GL_RETURN 将累积缓冲区中的RGBA乘以value后,送当前颜色缓冲区中显示。
2.glBegin, glEndvoid glBegin ( GLenum mode );参数说明:mode 取符号:GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS,GL_QUAD_STRIP和 GL_POLYGON。
void glEnd (void );功能描述:函数glBegin, glEnd成对出现,用来界定一个或一组类似图形元素顶点数据的开始与结束,图形元素的类型由mode确定。
GL_POINTS 每个顶点函数glVertex()描述了一个个孤立的顶点数据。
OpenGL使用手册
OpenGL函数使用手册(一)OpenGL函数库格式:<库前缀><根命令><可选的参数个数><可选的参数类型> 库前缀有gl、glu、aux、glut、wgl、glx、agl 等等,1,核心函数库主要可以分为以下几类函数:(1)绘制基本的几何图元函数。
如:glBegain().(2)矩阵操作、几何变换和投影变换的函数。
如:矩阵入栈glPushMatrix(),还有矩阵的出栈、转载、相乘,此外还有几何变换函数glTranslate*(),投影变换函数glOrtho()和视口变换函数glViewport()等等。
(3)颜色、光照和材质函数。
(4)显示列表函数,主要有创建、结束、生成、删除和调用显示列表的函数glNewList()、glEndList()、glGenLists()、glDeleteLists()和glCallList()。
(5)纹理映射函数,主要有一维和二维纹理函数,设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、glTexEnv*()和glTetCoord*()等。
(6)特殊效果函数。
(7)选着和反馈函数。
(8)曲线与曲面的绘制函数。
(9)状态设置与查询函数。
(10)光栅化、像素函数。
2,OpenGL实用库(The OpenGL Utility Library)(GLU)包含有43个函数,函数名的前缀名为glu.(1)辅助纹理贴图函数。
(2)坐标转换和投影变换函数。
(3)多边形镶嵌工具。
(4)二次曲面绘制工具。
(5)非均匀有理B样条绘制工具。
(6)错误反馈工具,获取出错信息的字符串gluErrorString()3,OpenGL辅助库包含有31个函数,函数名前缀名为aux这部分函数提供窗口管理、输入输出处理以及绘制一些简单的三维物体。
4,OpenGL工具库(OpenGL Utility Toolkit)包含大约30多个函数,函数前缀名为glut,此函数由glut.dll来负责解释执行。
OpenGL中常用的GLUT函数库讲解
OpenGL 中常用的GLUT 函数库GLUT函数说明一、初始化void glutInit(int* argc,char** argv)这个函数用来初始化GLUT库。
对应main 函数的形式应是:int main(int argc,char* argv[]);这个函数从main 函数获取其两个参数。
1void glutInitWindowSize(int width,int height);2voidglutInitWindowPosition(int x,int y);设置glut程序要产生的窗口的大小和位置(左上角)。
以像素为单位。
void glutInitDisplayMode(unsigned int mode);设置图形显示模式。
参数mode的可选值为:∙GLUT_RGBA:当未指明GLUT-RGBA或GLUT-INDEX时,是默认使用的模式。
表明欲建立RGBA模式的窗口。
∙GLUT_RGB:与GLUT-RGBA作用相同。
∙GLUT_INDEX:指明为颜色索引模式。
∙GLUT_SINGLE:只使用单缓存∙GLUT_DOUBLE:使用双缓存。
以避免把计算机作图的过程都表现出来,或者为了平滑地实现动画。
∙GLUT_ACCUM:让窗口使用累加的缓存。
∙GLUT_ALPHA:让颜色缓冲区使用alpha组件。
∙GLUT_DEPTH:使用深度缓存。
∙GLUT_STENCIL:使用模板缓存。
∙GLUT_MULTISAMPLE:让窗口支持多例程。
∙GLUT_STEREO:使窗口支持立体。
GLUT_LUMINACE: luminance是亮度的意思。
但是很遗憾,在多数Ope nGL平台上,不被支持。
二、事件处理(Event Processing)void glutMainLoop(void)让glut 程序进入事件循环。
在一个glut程序中最多只能调用一次。
一旦调用,会直到程序结束才返回。
三、窗口管理(Window Management)int glutCreateWindow(char* name);产生一个顶层的窗口。
OpenGL主要函数
1opengl 函数查询一:GL库函数使用颜色glshadeModel--选择平面明暗模式或光滑明暗模式glColor--设置当前颜色glColorPointer--定义颜色数组gllndex--设置当前颜色索引gllndexPointer--定义颜色索引数组glCOforTableEXT--为目标调色板纹理指定调色板的格式和大小glColorsubTableEXT--指定需要替代的目标纹理调色板的一部分绘制几何图原及物体glVertex--指定顶点glVertexPointer--定义顶点数据数组glArrayElement--指定用来绘制顶点的数组元素glBegin,glEnd--限定一个或多个图原顶点的绘制glEdgeFlag,glEdgeFlagy--指定边界标记glPointsize--指定光栅化点的直径glLinewidth--指定光栅化直线的宽度glLinestipple--指定点划线glPolygonMode--选择多边形光栅化模式glFrontFace--定义正面多边形和反反面多边形glPolygonstipple--设置多边形点划图glDrawElements--从数组数据绘制图原glRect--绘制矩形坐标转换glTranslate--用平移矩阵乘以当前矩阵glRotate--用旋转矩阵乘以当前矩阵glscale--用缩放矩阵乘以当前矩阵glViewport--设置机口glFrustum--用透视矩阵乘以当前矩阵glorthO--用正视矩阵乘以当前矩阵glClipPlane--指定切割几何物体的平面堆栈操作glLoadMatrix--用任意矩阵替换当前矩阵glMultMatrix--用任意矩阵乘以当前矩阵glMatrixMode--指定哪一个矩阵是当前矩阵glPushMatrix,glPopMatrix--压人和弹出当前矩阵堆栈glPushAttrib,glPopAttrib--压人和弹出属性堆栈glPushClientAttrib,glPopClientAttrib--在客户属性堆栈中保存和恢复客户状态变量组glPushName,gPopName--压人和弹出名称堆栈gllnitNames--初始名称堆栈2glLoadName--向名称堆栈中装载名称显示列表glNewList,glEndList--创建或替换一个显示列表glCallLISt--执行一个显示列表glCallLISts--执行一列显示列表glGenLists--生成一组空的相邻的显示列表glDeleteLists--删除一组相邻的显示列表gllSLISt--检验显示列表的存在使用光照和材质glNormal--设置当前的法向量glNormalPointer--定义法向量数组glLight--设置光源参数glLightModel--设置光照模型参数glMaterial--为光照模型指定材质参数glColorMateria--使材质颜色跟踪当前颜色像素操作glRasterPos--为像素操作指定光栅位置glBitmap--绘制位图glReadPixels--从帧缓存中读取一块像素glDrawPixels--将一个像素块写人帧缓存glCopyPixels--在帧缓存中拷贝像素glCopyTexlmage1D--将像素从帧缓存拷贝到一维纹理图像中glCopyTexlmageZD--把像素从帧缓存拷贝到二维纹理图像中glCopyTexsublmagelD--从帧缓存中拷贝一维纹理图像的子图像glCopyTexsublmageZD--从帧缓存中拷贝二维纹理图像的子图像glPixelZoom--指定像素缩放因子glPixelstore--设置像素存储模式glPixelTransfer--设置像素传输模式glPixelMap--设置像素传输映射表纹理映射glTexlmagelD--指定一维纹理图像glTexlmageZD--指定二维纹理映射glTexParameter--设置纹理参数glTexsublmage1D--指定已存在的一维纹理图像的一部分glTexsublmageZD--指定已存在的二维纹理图像的一部分glTexEnv--设置纹理环境参数glTexCoord--设置当前纹理坐标glTexGen--控制纹理坐标的生成glTexCoordPointer--定义纹理坐标数组glDeleteTextures--删除命名的纹理特殊效果操作glBlendFunc--指定像素的数学算法glHint--指定由实现确定的控制行为glFOg--指定雾化参数3帧缓存操作glClear--将缓存清除为预先的设置值glClearAccum--设置累加缓存的清除值glClearColor--设置颜色缓存的清除值glClearDepth--设置深度缓存的清除值glClearlndex--设置颜色索引缓存的清除值glClearstencil--设置模板缓存的清除值glDrawBuffer--指定绘制的颜色缓存gllndexMask--控制颜色索引缓存中单个位的写操作glColorMask--激活或关闭帧缓存颜色分量的写操作glDepthMask--激活或关闭对深度缓存的写操作glstencilMask--控制模板平面中单个位的写操作glAlphaFunc-一指定alpha检验函数glstencilFunc--设置模板检验函数和参考值glstencilop--设置模板检验操作glDepthFunc--指定深度比较中使用的数值glDepthRange--指定从单位化的设备坐标到窗口坐标的z值映射glLOgiCOp--为颜色索引绘制指定逻辑像素操作glACCum--对累加缓存进行操作绘制曲线和曲面glEvalCoord--求取激活的一维和二维纹理图glMapl--定义一维求值器glMapZ--定义二维求值器glMapGrid--定义一维或二维网格glEvalMesh--计算一维或二维点网格或线网格glEvalPoint--生成并求取网格中的单个点查询函数glGet--返回所选择的参数值glGetClipPlane--返回指定的切平面系数glGetColorTableEXT--获得当前目标纹理调色板的颜色表数据glGetColorTableParameterfvEXT,glGetColorTableParameterlvEXT-从颜色表中获得调色板参数glGetError--返回错误信息glGetLight--返回光源参数值glGetMap--返回求值器参数glGetMaterial--返回材质参数glGetPixelMap--返回指定的像素映像glGetPointery--返回顶点数据数组地JglGetPolygonstipple--返回多边形点戈glGetstring--返回描述当前OpenGLglGetTexEnv--返回纹理环境参数glGetTexGen--返回纹理坐标生成参数glGetTexlmage--返回纹理图像4glGetTexLevelParameter--返回指定细节水平的纹理参数值glGetTexParameter--返回纹理参数值二:GLU库函数绘制NURBS曲线和曲面gluNewNurbsRenderer--创建一个NURBS对像gluNurbsProperty--设置NURBS属性gluNurbsCallback--为NURBS对像定义回调函数gluBeginCurve,gluEndCurve--限定NURBS曲线的定义gluNurbsCurve--定义NURBS曲线的形状gluDeleteNurbsRenderer--删除NURBS对像gluBeglnsurface,gluEndsurface--限定NURBS曲面的定义ghiNurbssurface--定义NURBS曲面的形状gluBeginTrim,gluEndTrim--限定NURBS裁剪环的定义gluPwlCurve--描述分段线性NURBS裁剪曲线gfuBeglnPolygon,gluEndPolygon--限定多边形的定义gluPickMatrix--定义拾取区域绘制二次几何物体gluNewQuadric--创建一个二次对象gluQuadricDrawsope--指定二次对象的绘制方式gluQuadricNormals--指定二次对象使用的法向量类型gluQuadricorientation--指定二次对象的内侧面或外侧面方向gluCylinder--绘制圆柱体ghisphere--绘制球体glllDISk--绘制圆盘gluPartialDisk--绘制部分圆盘gliJDeleteQuadric--删除二次对象gluQuadricTexture--指定是否为二次对象使用纹理ghiQuadricCallback--为二次对象定义回调网格化gluNewTess--创建一个网格化对象gluTessVertex--在多边形上指定顶点gluTessCallback--为网格化对象定义回调gluTessBeglnPolygon,ghiTessEndPolygon--限定多边形的描述gluTessBeglnContour,gluTessEndContour--限定多边形轮廓线的定义gluTessProperty--设置网格化对象的属性ghiNextContour--标记开始绘制另一个轮廓线gluTessNormal--为多边形指定法向量gluDeleteTess--删除网格化对象坐标变换gluOorthoZD--定义二维正视投影矩阵gluPerspective--创建透视投影矩阵gltlLOOkAt--定义视景转换gluProject--将物体坐标映射为窗口坐标5gluInProject--将窗口坐标映射力物体坐标多重映射gfuBuildlDMipmaps--创建一维多重映射gluBuildZDMipmaps--创建H维多重映射gluSCalelmage--将图像缩放到任意尺寸查询函数ghiErrorstring--从OpenGL或GLU错误代码中生成错误字符串gluGetNurbsProperty--获得NURBS属性ghiGetstring--获得描述GLU版本号或支持GLU扩展调用的字符串ghiGetTessProperty--获得网格化对象的属性三:GLUT库函数初始化和启动事件处理ghjtlnit--初始化GLUT库glutlnitwindowPosition--设置初始窗口位置glutlnitwindowsize--设置初始窗口大小glutlnitDisplayMode--设置初始显示模式glutMainLoop--进人GLUT事件处理循环窗口管理glutCreatewindow--创建顶层窗口glutCreatesubwindow--创建子窗口ghitHidewindow--隐藏当前窗口的显示状态glutshowwindow--改变当前窗口的显示状态,使其显示gfutsetwindowTitle--设置当前顶层窗口的窗口标题ghitsetlconTitle--设置当前顶层窗口的图标标题ghitPostRedisplay--标记当前窗口需要重新绘制glutswapBuffers--交换当前窗口的缓存glutFullscreen--关闭全屏显示glutPositionwindow--申请改变当前窗口的位置gintReshapewindow--申请改变当前窗口的大小glutsetwindow--设置当前窗口ghitGetwindow--获得当前窗口的标识符glutPopwindow--改变当前窗口的位置,使其前移ghitPtshwilldOO--改变当前窗口的位置,使其后移glutDestroywindow--销毁指定的窗口glutlconifywindow--使当前窗口图标化显示glutsetCursor--设置当前窗口的鼠标形状重叠层管理glutEstablishoverlay--创建当前窗口的重叠层glutUseLayer--改变当前窗口的使用层glutRemoveoverlay--删除当前窗口的重叠层glutPostoverlayRedisplay--标记当前窗口的重叠层需要重新绘制glutshowoverlay--显示当前窗口的重叠层6glutHideoverlay--显示当__________前窗口的重叠层菜单管理glutCreateMenu--创建一个新的弹出式菜单glutAddMenuEntry--在当前菜单的底部增加一个菜单条目glutAddsubMenu--在当前菜单的底部增加一个子菜单触发条目glutAttachMenu--把当前窗口的一个鼠标按键与当前菜单的标识符联系起来glutGetMenu--获取当前菜单的标识符glutsetMenu--设置当前菜单glutDestroyMenu--删除指定的菜单glutChangeToMenuEntry--将指定的当前菜单中的菜单项更改为菜单条目glutChangeTosubMenu--将指定的当前菜单中的菜单项更改为子菜单触发条目glutRemoveMenultem--删除指定的菜单项glutDetachMenu--释放当前窗口的一个鼠标按键注册国调函数glutDispfayFunc--注册当前窗口的显示回调函数glutReshapeFunc--注册当前窗口的形状变化回调函数glutMouseFunc--注册当前窗口的鼠标回调函数glutMotionFunc--设置移动回调函数glutldleFunc--设置全局的空闲回调函数glutVisibilityFunc--设置当前窗口的可视回调函数glutKeyboardFunc--注册当前窗口的键盘回调函数glutspecialFunc--设置当前窗口的特定键回调函数glutoverlayDisplayFunc--注册当前窗口的重叠层显示回调函数glutPassiveMotionFunc--设置当前窗口的被动移动回调函数glutEntryFunc--设置当前窗口的鼠标进出回调函数glutspaceballMotionFunc--设置当前窗口的空间球移动回调函数glutspaceballRotateFunc--设置当前窗口的空间球旋转回调函数glutspaceballButtonFunc--设置当前窗口的空间球按键回调函数glutButtonBoxFunc--设置当前窗口的拨号按键盒按键回调函数glutDialsFunc--设置当前窗口的拨号按键盒拨号回调函数glutTabletMotionFunc--设置图形板移动回调函数glutTabletButtonFunc--设置当前窗口的图形板按键回调函数glutMenustatusFunc--设置全局的菜单状态回调函数glutTimerFunc--注册按一定时间间隔触发的定时器回调函数颜色素引映射表管理glutsetColor--设置当前窗口当前层一个颜色表单元的颜色glutGetColor--获得指定的索引颜色glutCopyColormap--将逻辑颜色表从指定的窗口拷贝到当前窗口状态检索glutGet--检索指定的GLUT状态glutLayerGet--检索属于当前窗口重叠层的GLU T状态glutDeviceGet--检索GLUT设备信息glutGetModifiers--返回修饰键在引起某些回调的事件发生时的状态glutExtensionsupported--判别当前OpenGL 版本是否支持给定的OpenGL扩展7字体绘制glutBltmapCharcter--绘制一个位图字符glutBitmapwidth--返回一个位图字符的宽度glutstrokeCharcter--绘制一个笔画字符glutstrokewidth--返回一个笔画字体的宽度几何图形绘制glutSolidsphere,glutwiresphere--绘制实心球体和线框球体glutsolidCube,glutwireCube--绘制实心立方体和线框立方体glutsolidCone,glutwireCone--绘制实心圆锥体和线框圆锥体glutsolidTorus,glutwireTorus--绘制实心圆环和线框圆环glutSolidDOdeCahedroll,glLltwiFeDOdechedfotl--绘制实心十二面体和线框十二面体glutSolidOctahedron,glutWireOctahedron--绘制买心八面体和线框八面体glutsolldTetrahedron,glutwireTetrahedron--绘制实心四面体和线框四面体glutSollelcosahedron,glutwirelcosahedron--绘制实心二十面体和线框二十面体glutsolidTeapot,glutwireTeapot--绘制实心茶壶和线框茶壶__。
opengl使用手册 简书
opengl使用手册简书【实用版】目录一、OpenGL 简介二、OpenGL 函数库1.核心函数库2.矩阵操作、几何变换和投影变换函数3.扩展库 GLEW三、OpenGL 菜单的使用1.交互式输入设备的处理2.glut 命令与鼠标函数四、总结正文一、OpenGL 简介OpenGL(Open Graphics Library)是一个跨平台的图形编程接口,用于渲染 2D 和 3D 图形。
它被广泛应用于游戏开发、计算机辅助设计、虚拟现实等领域。
OpenGL 提供了丰富的函数库,可以实现各种复杂的图形效果。
二、OpenGL 函数库OpenGL 的函数库主要可以分为核心函数库和扩展库。
核心函数库包含了基本的绘图功能,如绘制几何图元、矩阵操作、几何变换和投影变换等。
扩展库 GLEW(GLEW Extension Wrangler Library)则提供了更多的高级功能,如阴影、纹理贴图等。
1.核心函数库核心函数库包含了许多常用的绘图函数,如:- glBegin():开始绘制- glEnd():结束绘制- glVertex():绘制一个顶点- glColor():设置颜色2.矩阵操作、几何变换和投影变换函数OpenGL 提供了丰富的矩阵操作、几何变换和投影变换函数,如:- glPushMatrix():矩阵入栈- glPopMatrix():矩阵出栈- glTranslate():几何变换(平移)- glRotate():几何变换(旋转)- glScale():几何变换(缩放)- gluPerspective():投影变换3.扩展库 GLEWGLEW 是一个方便的扩展库,可以方便地管理 OpenGL 扩展。
它提供了一系列的函数,如:- glewInit():初始化 GLEW- glewGetError():获取 GLEW 错误- glewCreateContext():创建 OpenGL 上下文- glewMakeCurrent():设置当前 OpenGL 上下文三、OpenGL 菜单的使用OpenGL 支持交互式输入设备,如鼠标和键盘。
opengl详解
[OPENGL怎么用]OPENGL编程类似C编程,实际接口就是C,所以熟悉C是必要的一般编程可用到的函数库包括:OPENGL实用库:函数以glu开头OPENGL辅助库:函数以aux开头Windows专用函数库:函数以wgl开头Win32API:无专用前缀OPENGL中有115个核心函数,可以在任何OPENGL平台上使用OPENGL实用库比上面这115个函数高一级,提供高级调用OPENGL辅助库本来是提供初学者入门的函数,不保证在任何平台的使用但恰好可以在WIN32下使用,所以本讲座将大量引用WIN32下OPENGL编程有两个方便途径:1使用辅助库2使用C++基于消息驱动的编程显然1要简单一些,入门从这里开始吧。
[用之前的准备]1首先你需要下列*.lib包含在你的工程中:opengl32.lib glu32.lib glaux.lib本讲座所有例子“将”在VC5下调试通过,所以从project->setting->link->general->object/libary modules中加入上面三个*.lib(这些LIB,VC4以上版本已经自带,加入即可,不用在四处搜寻文件)2另外在你的运行程序路径下或\win95\system\下你需要一些*.dll动态连接库opengl32.dll glu32.dll rxddi.dll mga.drv第一讲[编程入门]这里我将给出一个小例子让大家熟悉用辅助库的编程结构:// GLOS.H//////////////////////////////////////////////////////////// This is an OS specific header file//判别操作系统的基本头文件#include <windows.h>// disable data conversion warnings#pragma warning(disable : 4244) // MIPS#pragma warning(disable : 4136) // X86#pragma warning(disable : 4051) // ALPHA////////////////////////////////////////////////////////// //opengl.cpp//主程序#include "glos.h"#include <GL/gl.h>#include <GL/glaux.h>#include "windows.h"void main(void){/*初始化:*/auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);//窗口显示单缓存和RGB(彩色)模式auxInitPosition(0,0,500,500);//大小x=500 y=500 (0,0)是屏幕左上点auxInitWindow("sample1");//窗口初始化,参数是标题glClearColor(0.0,0.0,0.0,0.0);//将窗口清为黑色glClear(GL_COLOR_BUFFER_BIT);//将颜色缓存清为glClearColor命令所设置的颜色//即背景色/*绘图*/glColor3f(1.0,0.0,0.0);//选颜色(R,G,B),参数0<x<1,这里就是红色glRectf(-0.5,-0.5,0.5,0.5);//画个方块glFlush();//强制绘图,不驻留缓存_sleep(1000);//windows函数,显示1秒(单位是毫秒)}//end of sample根据注释,应该看出程序功能:显示红色方块(2D)一秒钟。
OpenGL GLUT库函数汇总
OpenGL 库函数汇总-3.GLUT 库函数3.GLUT 库函数初始化和启动事件处理-------------------------glutInitglutInitWindowPosition glutInitWindowSizeglutInitDisplayModeglutMainLoop窗口管理-------------------------glutCreateWindowglutCreateSubWindowglutHideWindowglutShowWindowglutSetWindowTitleglutPostRedisplayglutSwapBuffersglutFullScreenglutPositionWindowglutReshapeWindowglutSetWindowglutGetWindowglutPopWindowglutPushWindowglutDestroyWindowglutIconifyWindowglutSetCursor重叠层管理-------------------------glutEstablishOverlay glutUseLayer glutRemoveOverlay glutPostOverlayRedisplay glutShowOverlay glutHideOverlay菜单管理-------------------------glutCreateMenu glutAddMenuEntry glutAddSubMenu glutAttachMenu glutGetMenu glutSetMenu glutDestroyMenu glutChangeToMenuEntry glutChangeToSubMenu glutRemoveMenuItem glutDetachMenu注册回调函数-------------------------------glutDisplayFunc glutReshapeFunc glutMouseFunc glutMotionFunc glutIdleFunc glutVisibilityFunc glutKeyboardFunc glutSpecialFunc glutOverlayDisplayFunc glutPassiveMotionFunc glutEntryFunc glutSpaceballMotionFunc glutSpaceballRotateFunc glutSpaceballButtonFunc glutButtonBoxFunc glutDialsFunc glutTableMotionFunc glutTableButtonFunc glutMenuStatusFunc glutTimerFunc颜色索引映射表管理-------------------------------glutSetColor glutGetColor glutCopyColormap状态检索-------------------------------glutGetglutLayerGetglutDeviceGetglutGetModifiersglutExtensionSupported字体绘制-------------------------------glutBitmapCharacterglutBitmapWidthglutStrokeCharacterglutStrokeWidth几何图形绘制-------------------------------glutSolidSphere , glutWireSphere glutSolidCube , glutWireCubeglutSolidCone , glutWireConeglutSolidTorus , glutWireTorus glutSolidDodecahedron , glutWireDodecahedron glutSolidOctahedron , glutWireOctahedronglutSolidTetrahedron , glutWireTetrahedronglutSolieIcosahedron , glutWireIcosahedronglutSolidTeapot , glutWireTeapotvoid glutWireSphere(GLdouble radius, GLint slices, GLint stacks);绘制线框球体void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);绘制实心球体参数:radius:球体的半径slices:球体围绕z轴分割的数目stacks:球体沿着z轴分割的数目绘制中心在模型坐标原点,半径为radius的球体,球体围绕z轴分割slices次,球体沿着z轴分割stacks次//*******************************************************************************************void glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);绘制线框圆锥体void glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);绘制实心圆锥体参数:radius:圆锥体的半径height:圆锥体的高slices:圆锥体围绕z轴分割的数目stacks:圆锥体沿着z轴分割的数目圆锥体的轴为z轴方向,它的基底位于z=0的平面内,顶点z=height,圆锥体围绕z轴分割slices个数目,沿着z轴分割stacks个数目.//*******************************************************************************************void glutWireCube(GLdouble size);绘制线框立方体void glutSolidCube(GLdouble size);绘制实心立方体参数:size:立方体的边长//*******************************************************************************************void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); 绘制线框圆环void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); 绘制实心圆环参数:innerRadius:圆环的内半径outerRadius:圆环的外半径nsides:圆环腔的分割数rings:圆环的环线数//*******************************************************************************************void glutWireDodecahedron(void);绘制线框十二面体void glutSolidDodecahedron(void);绘制实心十二面体//******************************************************************************************* void glutWireTeapot(GLdouble size);绘制线框茶壶void glutSolidTeapot(GLdouble size);绘制实心茶壶参数:size:茶壶的相对大小//******************************************************************************************* void glutWireOctahedron(void);绘制线框八面体void glutSolidOctahedron(void);绘制实心八面体//******************************************************************************************* void glutWireTetrahedron(void);绘制线框四面体void glutSolidTetrahedron(void);绘制实心四面体//******************************************************************************************* void glutWireIcosahedron(void);绘制线框二十面体void glutSolidIcosahedron(void);绘制实心二十面体。
OpenGL简介资料
//主函数
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); //设置显示模式(颜色、缓冲区等)
glutCreateWindow(“A Simple Example”); //创建窗口
OpenGL功能(五)
纹理映射(Texture Mapping) 利用OpenGL纹理映射功能可以十分逼真地表 达物体表面细节。
OpenGL功能(六)
位图显示和图象增强 图象功能除了基本的拷贝和像素读写外,还提 供融合(Blending)、反走样(Antialiasing) 和雾(fog)的特殊图象效果处理。以上三条 可使被仿真物更具真实感,增强图形显示的效 果。
用OpenGL编写程序的基本模板
模板演示
基本操作(视口变换)
Void glViewport(GLint x,GLint y,GLsizei width,GLsizei height); 在窗口中指定一个用于显示图像的像素矩形。 参数(x,y)是视口左下角的坐标,而参数 width和height为视口的大小。默认情况下, 视口的初始值为(0,0,winWidth,winHeight),其 中winWidth和winHeight是窗口的大小。
将影响投影矩阵而不是模型视点矩阵,同时消除以前 的投影变换。每个投影变换函数都完整的描述了一种特 定的变换,因此通常不混合使用两种投影变换
(一)透视投影
void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble near,GLdouble far); 参数fovy是在yz平面内的视野角度,其取值范围为[0.0, 180.0];参数aspect是视景体顶面的宽高比(w/h);参数 near和far是视点和两个裁减面之间的距离,必须大于0。
OpenGL 中常用的 GLUT 函数库
OpenGL 中常用的GLUT 函数库GLUT函数说明一、初始化void glutInit(int* argc,char** argv)这个函数用来初始化GLUT库。
对应main 函数的形式应是:int main(int argc,char* argv[]);这个函数从main 函数获取其两个参数。
1void glutInitWindowSize(int width,int height);2voidglutInitWindowPosition(int x,int y);设置glut程序要产生的窗口的大小和位置(左上角)。
以像素为单位。
void glutInitDisplayMode(unsigned int mode);设置图形显示模式。
参数mode的可选值为:•GLUT_RGBA:当未指明GLUT-RGBA或GLUT-INDEX时,是默认使用的模式。
表明欲建立RGBA模式的窗口。
•GLUT_RGB:与GLUT-RGBA作用相同。
•GLUT_INDEX:指明为颜色索引模式。
•GLUT_SINGLE:只使用单缓存•GLUT_DOUBLE:使用双缓存。
以避免把计算机作图的过程都表现出来,或者为了平滑地实现动画。
•GLUT_ACCUM:让窗口使用累加的缓存。
•GLUT_ALPHA:让颜色缓冲区使用alpha组件。
•GLUT_DEPTH:使用深度缓存。
•GLUT_STENCIL:使用模板缓存。
•GLUT_MULTISAMPLE:让窗口支持多例程。
•GLUT_STEREO:使窗口支持立体。
•GLUT_LUMINACE: luminance是亮度的意思。
但是很遗憾,在多数Ope nGL平台上,不被支持。
二、事件处理(Event Processing)void glutMainLoop(void)让glut 程序进入事件循环。
在一个glut程序中最多只能调用一次。
一旦调用,会直到程序结束才返回。
三、窗口管理(Window Management)int glutCreateWindow(char* name);产生一个顶层的窗口。
OpenGL的库函数介绍
OpenGL的库函数介绍开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。
OpenGL库函数的命名方式非常有规律。
所有OpenGL函数采用了以下格式:<库前缀><根命令><可选的参数个数><可选的参数类型>库前缀有gl、glu、aux、glut、wgl、glx、agl等等,分别表示该函数属于OpenGL那个开发库。
从函数名后面中还可以看出需要多少个参数以及参数的类型。
I代表int型,f代表float型,d代表double型,u代表无符号整型。
例如:glVertex3fv()表示了该函数属于gl库,参数是三个float型参数指针。
我们用glVertex*() 来表示这一类函数。
OpenGL函数库相关的API有核心库(gl)、实用库(glu)、辅助库(aux)、实用工具库(glut)、窗口库(glx、agl、wgl)和扩展函数库等。
从下图可以看出,核心库(gl)是核心,实用库(glu)是对gl的部分封装。
窗口库(glx、agl、wgl)是针对不同窗口系统的函数。
实用工具库(glut)是跨平台的OpenGL程序的工具包,比aux功能强大。
扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数。
下面逐一对这些库进行详细介绍。
1.OpenGL核心库(GL)核心库包含有115个函数,函数名的前缀为gl。
这部分函数用于常规的、核心的图形处理。
由于许多函数可以接收不同数据类型的参数,因此派生出来的函数原形多达300多个。
核心库在Windows平台上的头文件为“GL.H”,库文件为“OPENGL32.LIB”,动态链接库为“OPENGL32.DLL”。
核心库可以在所有的OpenGL平台上运行。
核心库中的函数主要分为以下几类:●基本几何图元的绘制函数: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()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OpenGL的库函数介绍开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。
OpenGL库函数的命名方式非常有规律。
所有OpenGL函数采用了以下格式:<库前缀><根命令><可选的参数个数><可选的参数类型>库前缀有gl、glu、aux、glut、wgl、glx、agl等等,分别表示该函数属于OpenGL那个开发库。
从函数名后面中还可以看出需要多少个参数以及参数的类型。
I代表int型,f代表float型,d代表double型,u代表无符号整型。
例如:glVertex3fv()表示了该函数属于gl库,参数是三个float型参数指针。
我们用glVertex*() 来表示这一类函数。
OpenGL函数库相关的API有核心库(gl)、实用库(glu)、辅助库(aux)、实用工具库(glut)、窗口库(glx、agl、wgl)和扩展函数库等。
从下图可以看出,核心库(gl)是核心,实用库(glu)是对gl的部分封装。
窗口库(glx、agl、wgl)是针对不同窗口系统的函数。
实用工具库(glut)是跨平台的OpenGL程序的工具包,比aux功能强大。
扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数。
下面逐一对这些库进行详细介绍。
1.OpenGL核心库(GL)核心库包含有115个函数,函数名的前缀为gl。
这部分函数用于常规的、核心的图形处理。
由于许多函数可以接收不同数据类型的参数,因此派生出来的函数原形多达300多个。
核心库在Windows平台上的头文件为“GL.H”,库文件为“OPENGL32.LIB”,动态链接库为“OPENGL32.DLL”。
核心库可以在所有的OpenGL平台上运行。
核心库中的函数主要分为以下几类:●基本几何图元的绘制函数: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.OpenGL实用库(GLU)实用库包含有43个函数,函数名的前缀为glu。
为避免较复杂的绘图必须从点、线、面开始,实用库(Glu)函数通过调用核心库的函数,为开发者提供相对简单的用法来实现一些较为复杂的图形绘制操作,从而减轻繁重的编程工作。
实用库Windows平台上的头文件我“GLU.H”,库文件为“GLU32.LIB”,动态链接库为“GLU32.DLL”。
实用库可以在所有的OpenGL平台上运行。
实用库中的函数主要包括了以下几种:●辅助纹理贴图函数: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.OpenGL辅助库(AUX) 已被后面的4取代,可以不看辅助库包含有31个函数,函数名的前缀为aux。
这部分函数提供窗口管理、输入输出处理以及绘制一些简单三维物体。
创建aux库是为了学习和方便编写OpenGL程序。
辅助库不能在所有的OpenGL平台上运行,且Aux库存在windows实现上的错误,容易导致频繁的崩溃,很大程度上已经被glut库取代。
辅助库在Windows平台上的头文件为“GLAUX.H”,库文件为“GLAUX.LIB”,动态链接库为“GLAUX.DLL”。
OpenGL中的辅助库不能在所有的OpenGL平台上运行。
辅助库函数主要包括以下几类:●窗口初始化和退出函数:auxInitDisplayMode()和auxInitPosition();●窗口处理和时间输入函数:auxReshapeFunc()、auxKeyFunc()和auxMouseFunc();●颜色索引装入函数:auxSetOneColor();●三维物体绘制函数:包括了两种形式网状体和实心体,如绘制立方体auxWireCube()和auxSolidCube()。
这里以网状体为例,长方体auxWireBox()、环形圆纹面auxWireTorus()、圆柱auxWireCylinder()、二十面体auxWireIcosahedron()、八面体auxWireOctahedron()、四面体auxWireTetrahedron()、十二面体auxWireDodecahedron()、圆锥体auxWireCone()和茶壶auxWireTeapot();●背景过程管理函数:auxIdleFunc();●程序运行函数:auxMainLoop()。
●4.OpenGL工具库(GLUT)工具库包含大约30多个函数,函数名的前缀为glut。
glut是不依赖于窗口平台的OpenGL工具包,由Mark KLilgrad在SGI时编写(此人现在任职于Nvidia公司),目的是隐藏不同窗口平台API的复杂度。
函数以glut开头,它们作为aux库功能更强的替代品,提供更为复杂的绘制功能。
工具库在Windows平台上的头文件为“GLUT.H”,库文件为“GLUT32.LIB”,动态链接库为“GLUT32.DLL”。
由于glut中的窗口管理函数是不依赖于运行环境的,因此OpenGL 中的工具库可以在X-Window, Windows NT, OS/2等系统下运行,特别适合于开发不需要复杂界面的OpenGL示例程序。
对于有经验的程序员来说,一般先用glut理顺3D图形代码,然后再集成为完整的应用程序。
这部分函数主要包括:●窗口操作函数:窗口初始化、窗口大小、窗口位置函数等[glutInit()、glutInitDisplayMode()、glutInitWindowSize()、glutInitWindowPosition()];●回调函数:响应刷新消息、键盘消息、鼠标消息、定时器函数[GlutDisplayFunc()、glutPostRedisplay()、glutReshapeFunc()、glutTimerFunc()、glutKeyboardFunc()、glutMouseFunc()];●创建复杂的三维物体:这些和aux库的函数功能相同;●菜单函数:创建添加菜单的函数GlutCreateMenu()、glutSetMenu()、glutAddMenuEntry()、glutAddSubMenu()和glutAttachMenu();●程序运行函数:glutMainLoop()。
5.Windows专用库(wgl)Windows专用库(wgl)是针对Windows平台窗口的扩展,包含有16个函数,函数名的前缀为wgl。
这部分函数主要用于弥补OpenGL在文本方面的不足。
Windows专用库只能用于Windows环境中。
其头文件、库文件和动态链接库都和Windows GDI一样,由Windows底层提供,头文件是“WINGDI.h”,只能在Windows平台上运行。
这类函数主要包括以下几类:●绘图上下文相关函数:wglCreateContext()、wglDeleteContext()、wglGetCurrentDC()、wglGetCurrentContent()、wglDeleteContent();●文字和文本处理函数:wglUseFontBitmaps()、wglUseFontOutlines();●覆盖层、地层和主平面层处理函数:wglCopyContext()、wglCreateLayerPlane()、wglDescribeLayerPlane()、wglReakizeLayerPlatte();●其他函数:wglShareLists()、wglGetProcAddress()。