# 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;这部分函数用于常规的、核心的图形处理;此函数由 gl.dll 来负责解释执行:

# 绘制几何图形:

glVertex();  //在OpenGL中指定顶点
glVertexPointer();  //指定数组顶点
glArrayElement();  //指定用来呈现一个顶点的数组元素
glBegin();  glEnd();  //定义一个或一组原始的顶点
glEdgeFlag(); glEdgeFlagv(); // 定义一个边缘标志数组
glPointSize();  //设定光栅点的直径
glLineWidth(); //设定光栅线段的宽
glLineStipple();  //设定线点绘图案
glPolygonMode();  //选择一个多边形的光栅模式
glFrontFace();  //定义多边形的前面和背面
glPolygonStipple();  //设定多边形填充图案
glDrawElements();  //渲染数组数据中的图元
glRect();  //绘制一个矩形

# 坐标转换:

glTranslate();  //移动坐标系
glRotate();  //选择
glScale();  //缩放
glViewPoint();  //视口变换
glFrustum();  //当前矩阵乘上透视矩阵
glOrtho();  //用垂直矩阵与当前矩阵相乘
glClipPlane();  //定义被裁剪的一个平面几何体

# 矩阵操作、几何变换和投影变换的函数:

glPushMatrix();    //矩阵入栈函数
glPopMatrix();     //矩阵出栈函数 
glLoadMatrix();    //装载矩阵函数
glMultMatrix();    //矩阵相乘函数
glMatrixMode();    //当前矩阵函数
glLoadIdentity();  //矩阵标准化函数
glTranslate*(); glRotate*(); glScale*();    //几何变换函数
glOrtho(); glFrustum(); //投影变换函数 
glViewport(); //视口变换函数;;  
glPushAttrib();   //属性堆栈的压入操作
glPopAttrib();  //属性堆栈的弹出操作
glPushName();   //名字堆栈的压入操作
glPopName();   //名字堆栈的弹出操作
glInitName();  // 初始化名字堆栈
glLoadName();  //将一个名字调入名字堆栈

# 颜色、光照和材质的函数:

glColor*(); glIndex*();  //设置颜色模式函数 
glLight*(); glLightModel*(); //设置光照效果的函数
glMaterial();  //设置材质效果函数
glNormal();  //设定当前顶点法向
glNormalPointer();  //设定一个法向数组
glColorMaterial();  //使一个材质色彩指向当前的色彩

# 显示列表函数:

glNewList();   //创建列表的函数
glEndList();   //结束列表的函数
glGenLists();   //生成列表的函数
glCallList();   //调用显示列表的函数
glDeleteLists();   //删除列表的函数

# 纹理映射函数:

glTexImage1D();  //一维纹理函数
glTexImage2D();  //二维纹理函数
glTexParameter*();  //设置纹理参数的函数
glTexEnv*();  //设置纹理环境的函数
glTetCoord*();  //设置纹理坐标的函数
glTexSubImage1D();  //定义一个存在的一维纹理图像的一部分,但不能定义新的纹理
glTexSubImage2D();  //定义一个存在的二维纹理图像的一部分,但不能定义新的纹理
glTexGen();  //纹理坐标的自动生成
glTexCoordPointer();  //定义一个纹理坐标数组
glDeleteTextures();  //删除命名的纹理

# 帧缓存操作:

glClear();  //用当前值清除缓冲区
glClearAccum();  //为累加缓冲区指定用于清除的值
glClearColor();  //为色彩缓冲区指定用于清除的值
glClearDepth();  // 为深度缓冲区指定用于清除的值
glClearIndex();  //设置清除颜色
glClearStencil();  //为模板缓冲区指定用于清除的值
glDrawBuffer();  //定义选择哪个色彩缓冲区被绘制
glIndexMask();  // 控制写色彩索引缓冲区里的单独位
glColorMask();  // 允许或不允许写色彩组件帧缓冲区
glDepthMask();  //允许或不允许写入深度缓冲区
glStencilMask();  //控制在模板面写单独的位
glStencilFunc(); //为模板测试设置功能和参照值
glStencilOp();  //设置激活模式测试
glDepthFunc();  // 定义用于深度缓冲区对照的数据
glDepthRange();  //定义 z 值从标准的设备坐标映射到窗口坐标
glLogicOp();  // 为色彩索引渲染定义一个逻辑像素操作
glAccum();  //操作累加缓冲区

# 特殊效果函数:

glBlendFunc(); //融合函数 
glHint();  //反走样函数 
glFog*();  //雾化效果函数

# 光栅化、像素操作函数:

glRasterPos*();  //像素位置
glLineWidth();  //线型宽度
glPolygonMode();  //多边形绘制模式 
glReadPixel();  //读取像素
glCopyPixel();  //复制像素
glBitmap();  //绘制一个位图
glDrawPixels();  //绘制一个位图
glCopyTexImage1D();  //将像素从帧缓冲区拷贝到一个单空间纹理图象中
glCopyTexImage2D();  //将像素从帧缓冲区拷贝到一个双空间纹理图象中
glCopyTexSubImage1D();  //从帧缓冲区拷贝一个单空间纹理的子图象
glCopyTexSubImage2D();  //从帧缓冲区拷贝一个双空间纹理的子图象
glPixelZoom();  //设定像素缩放因数
glPixelStore();  // 设定像素存储模式
glPixelTransfer();  //设定像素传输模式
glPixelMap();  //设定像素交换图

# 选择与反馈函数:

glRenderMode();  //渲染模式 
glSelectBuffer(); //选择缓冲区
glFeedbackBuffer(); //反馈缓冲区

# 曲线与曲面的绘制函数:

glMap*();  //生成曲线的函数
glMapGrid*();  //生成曲面的函数
glEvalCoord*(); glEvalMesh*();  //求值器的函数
glMap1();  //定义一个一维求值程序
glMap2();  //定义一个二维求值程序
glEvalPoint();  //生成及求解一个网格中的单点

# 查询函数:

glGet();
glGetClipPlane();
glGetColorTableEXT();
glGetColorTableParameterfvEXT();
glGetColorTableParameterivEXT();
glGetError();
glGetLight();
glGetMap();
glGetMaterial();
glGetPixelMap();
glGetPointerv();
glGetPolygonStipple();
glGetString();
glGetTexEnv();
glGetTexImage();
glGetTexLevelParameter();
glGetTexParameter();

# 2.OpenGL 实用库 The OpenGL Utility Library (GLU)

函数名的前缀为 glu。OpenGL 提供了强大的但是为数不多的绘图命令,所有较复杂的绘图都必须从点、线、面开始。Glu 为了减轻繁重的编程工作,封装了 OpenGL 函数,Glu 函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。此函数由 glu.dll 来负责解释执行。OpenGL 中的核心库和实用库可以在所有的 OpenGL 平台上运行。

# 辅助纹理贴图函数:

gluScaleImage();
gluBuild1Dmipmaps();
gluBuild2Dmipmaps();

# 坐标转换和投影变换函数:

gluPerspective(); gluOrtho2D(); gluLookAt()  //定义投影方式函数
gluPickMatrix();  //拾取投影视景体函数
gluProject(); gluUnProject();  //投影矩阵计算
gluLookAt();

# 多边形镶嵌工具、网格化:

gluNewTess();
gluDeleteTess();
gluTessCallback();
gluBeginPolygon();
gluTessVertex();
gluNextContour();
gluEndPolygon();
gluTessBeginPolygon();
gluTessEndPolygon();
gluTessBeginContour();
gluTessBeginContour();
gluTessProperty();
gluTessNormal();

# 二次曲面绘制工具:

gluNewQuadric();
gluSphere();  //球面
gluCylinder(); //圆柱面锥面
gluDisk();
gluPartialDisk();
gluDeleteQuadric();
gluQuadricDrawStyle();
gluQuadricNormals();
gluQuadricOrientation();
gluQuadricTexture();
gluQuadricCallback();

# 绘制 NURBS 曲线和曲面:

gluNewNurbsRenderer();
gluNurbsProperty();
gluNurbsCallback();
gluBeginCurve();
gluEndCurve();
gluNurbsCurve();
gluDeleteNurbsRenderer();
gluBeginSurface();
gluEndSurface();
gluNurbsSurface();
gluBeginTrim();
gluEndTrim();
gluPwlCurve();
gluBeginPolygon();
gluEndPolygon();
gluPickMatrix();

# 多重映射:

gluBuild1DMipmaps();
gluBuild2DMipmaps();
gluScaleImage();

# 查询函数:

gluErrorString();
gluGetNurbsProperty();
gluGetString();
gluGetTessProperty();

# 错误反馈工具:

gluErrorString();  //获取出错信息的字符串

# 3.OpenGL 辅助库

函数名前缀为 aux。这部分函数提供窗口管理、输入输出处理以及绘制一些简单三维物体。此函数由 glaux.dll 来负责解释执行。创建 aux 库是为了学习和编写 OpenGL 程序,它更像是一个用于测试创意的预备基础接管。Aux 库在 windows 实现有很多错误,因此很容易导致频繁的崩溃。在跨平台的编程实例和演示中,aux 很大程度上已经被 glut 库取代。OpenGL 中的辅助库不能在所有的 OpenGL 平台上运行。

# 窗口初始化和退出函数:

auxInitDisplayMode();
auxInitPosition();

# 窗口处理和时间输入函数:

auxReshapeFunc();
auxKeyFunc();
auxMouseFunc();

# 颜色索引装入函数:

auxSetOneColor();

# 三维物体绘制函数:

auxWireCube(); auxSolidCube();  //绘制立方体
auxWireBox();  //长方体 
auxWireTorus();  //环形圆纹面
auxWireCylinder();  //圆柱 
auxWireIcosahedron();  //二十面体
auxWireOctahedron();  //八面体
auxWireTetrahedron();  //四面体
auxWireDodecahedron();  //十二面体
auxWireCone();  //圆锥体
auxWireTeapot();  //茶壶

# 背景过程管理函数:

auxIdleFunc();

# 程序运行函数:

auxMainLoop();

# 4.OpenGL 工具库 OpenGL Utility Toolkit

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

# 窗口操作函数:

glutInit();  //窗口初始化函数
glutInitDisplayMode();  //窗口初始显示模式函数
glutInitWindowSize();  //窗口大小函数
glutInitWindowPosition();  //窗口位置函数
glutMainLoop();

# 窗口管理:

glutCreateWindow();
glutCreateSubWindow();
glutHideWindow();
glutShowWindow();
glutSetWindowTitle();
glutPostRedisplay();
glutSwapBuffers();
glutFullScreen();
glutPositionWindow();
glutReshapeWindow();
glutSetWindow();
glutGetWindow();
glutPopWindow();
glutPushWindow();
glutDestroyWindow();
glutIconifyWindow();
glutSetCursor();

# 重叠层管理:

glutEstablishOverlay();
glutUseLayer();
glutRemoveOverlay();
glutPostOverlayRedisplay();
glutShowOverlay();
glutHideOverlay();

# 颜色索引映射表管理:

glutSetColor();
glutGetColor();
glutCopyColormap();

# 状态检索:

glutGet();
glutLayerGet();
glutDeviceGet();
glutGetModifiers();
glutExtensionSupported();

# 字体绘制:

glutBitmapCharacter();
glutBitmapWidth();
glutStrokeCharacter();
glutStrokeWidth();

# 几何图形绘制:

glutSolidSphere();
glutWireSphere();
glutSolidCube();
glutWireCube();
glutSolidCone();
glutWireCone();
glutSolidTorus();
glutWireTorus();
glutSolidDodecahedron();glutWireDodecahedron();
glutSolidOctahedron();
glutWireOctahedron();
glutSolidTetrahedron();
glutWireTetrahedron();
glutSolieIcosahedron();
glutWireIcosahedron();
glutSolidTeapot();
glutWireTeapotv
voidglutWireSphere(GLdoubleradius,GLintslices,GLintstacks);//绘制线框球体
voidglutSolidSphere(GLdoubleradius,GLintslices,GLintstacks);//绘制实心球体
参数:
radius:球体的半径
slices:球体围绕z轴分割的数目
stacks:球体沿着z轴分割的数目
绘制中心在模型坐标原点,半径为radius的球体,球体围绕z轴分割slices次,球体沿着z轴分割stacks次

//*******************************************************************************************
voidglutWireCone(GLdoublebase,GLdoubleheight,GLintslices,GLintstacks);//绘制线框圆锥体
voidglutSolidCone(GLdoublebase,GLdoubleheight,GLintslices,GLintstacks);//绘制实心圆锥体

参数:
radius:圆锥体的半径
height:圆锥体的高
slices:圆锥体围绕z轴分割的数目
stacks:圆锥体沿着z轴分割的数目
圆锥体的轴为z轴方向,它的基底位于z=0的平面内,顶点z=height,圆锥体围绕z轴分割slices个数目,沿着z轴分割stacks个数目.

//*******************************************************************************************
voidglutWireCube(GLdoublesize);//绘制线框立方体
voidglutSolidCube(GLdoublesize);//绘制实心立方体

参数:size:立方体的边长
//*******************************************************************************************
voidglutWireTorus(GLdoubleinnerRadius,GLdoubleouterRadius,GLintsides,GLintrings);//绘制线框圆环
voidglutSolidTorus(GLdoubleinnerRadius,GLdoubleouterRadius,GLintsides,GLintrings);//绘制实心圆环
参数:
innerRadius:圆环的内半径
outerRadius:圆环的外半径
nsides:圆环腔的分割数
rings:圆环的环线数

//*******************************************************************************************
voidglutWireDodecahedron(void);//绘制线框十二面体
voidglutSolidDodecahedron(void);//绘制实心十二面体

//*******************************************************************************************
voidglutWireTeapot(GLdoublesize);//绘制线框茶壶
voidglutSolidTeapot(GLdoublesize);//绘制实心茶壶
参数:size:茶壶的相对大小

//*******************************************************************************************
voidglutWireOctahedron(void);//绘制线框八面体
voidglutSolidOctahedron(void);//绘制实心八面体

//*******************************************************************************************
voidglutWireTetrahedron(void);//绘制线框四面体
voidglutSolidTetrahedron(void);//绘制实心四面体

//*******************************************************************************************
voidglutWireIcosahedron(void);//绘制线框二十面体
voidglutSolidIcosahedron(void);//绘制实心二十面体

如果需要用到长方体那就用glScalef(x,y,z); 做自己想要的长方体,这儿的x,y,z分别对应x,y,z轴的缩放比例
不过居然没有看到圆柱体的函数。在网上搜索不少人说到的都是用一个aux开头的辅助函数库。但是这有个很大的缺陷,已经被GLUT库代替了
举个创建2次对象的简单例子:

//创建一个半径为5,在经线和纬线方向细分数为10的球体
GLUquadricObj *pobj;
pobj=gluNewQuadric();
gluQuadricDrawStyle(pobj,GLU_LINE);//确定几何体的绘制模式(GLU_LINE)
gluSphere(pobj,5,10,10);//创建圆环盘,innerRadius,outerRadius分别指定了内径和外径创建圆柱体创建球体下面是几个用于创建简单的2次曲面的GLU函数:GLUquadricObj* gluNewQuadric();//创建一个新的2次曲面对象,并返回一个指向该对象的指针
void gluDeleteQuadric(GLUquadricObj*);//删除又2次对象指针指定的2次曲面

void gluSphere(GLUquadricObj* pobj,GLdouble radius,GLint silces,GLint stacks);
void gluCylinder(GLUquadricObj* pobj,GLdouble baseRadius,GLdouble topRadius,GLint slices,GLint stacks);
void gluDisk(GLUquadricObj* pobj,GLdouble innerRadius,GLdouble outerRadius,GLint slices,GLint stacks);

# 回调函数:

glutDisplayFunc();  //注册一个绘图函数
glutPostRedisplay();  //标记当前窗口需要重新绘制
glutReshapeFunc();  //自适应屏幕窗口大小的改变
glutTimerFunc();  //注册一个定时器的回调函数
glutKeyboardFunc();   //响应键盘消息
glutMouseFunc();  //响应鼠标消息
glutMotionFunc();
glutIdleFunc();
glutVisibilityFunc();
glutSpecialFunc();
glutOverlayDisplayFunc();
glutPassiveMotionFunc();
glutEntryFunc();
glutSpaceballMotionFunc();
glutSpaceballRotateFunc();
glutSpaceballButtonFunc();
glutButtonBoxFunc();
glutDialsFunc();
glutTableMotionFunc();
glutTableButtonFunc();
glutMenuStatusFunc();

# 菜单函数:

glutCreateMenu();
glutSetMenu();
glutAddMenuEntry();
glutAddSubMenu();
glutAttachMenu();
glutGetMenu();
glutDestroyMenu();
glutChangeToMenuEntry();
glutChangeToSubMenu();
glutRemoveMenuItem();
glutDetachMenu();

# 程序运行函数:

glutMainLoop();

# 5.Windows 专用库

针对 windows 平台的扩展,包含有 16 个函数,函数名前缀为 wgl。这部分函数主要用于连接 OpenGL 和 Windows ,以弥补 OpenGL 在文本方面的不足。Windows 专用库只能用于 Windows 环境中。

# 绘图上下文相关函数:

wglCreateContext();
wglDeleteContext();
wglGetCurrentContent();
wglGetCurrentDC();
wglDeleteContent();

# 文字和文本处理函数:

wglUseFontBitmaps();
wglUseFontOutlines();

# 覆盖层、地层和主平面层处理函数:

wglCopyContext();
wglCreateLayerPlane();
wglDescribeLayerPlane();
wglReakizeLayerPlatte();

# 其他函数:

wglShareLists();
wglGetProcAddress();

# 6.Win32 API 函数库

包含有 6 个函数,函数名无专用前缀,是 win32 扩展函数。这部分函数主要用于处理像素存储格式和双帧缓存;这 6 个函数将替换 Windows GDI 中原有的同样的函数。Win32API 函数库只能用于 Windows 95/98/NT 环境中。

# 7.X 窗口专用库

是针对 Unix 和 Linux 的扩展函数。包括渲染上下文、绘制图元、显示列表、纹 理贴图等;

# 初始化:

glXQueryExtension();

# 渲染上下文函数:

glXCreateContext();
glXDestroyContext();
glXCopyContext();
glXMakeCurrent();
glXCreateGLXPixmap();

# 执行:

glXWaitGL();
glXWaitX();

# 缓冲区和字体:

glXSwapBuffers();
glXUseXFont();

# 8.其他扩展库

这些函数可能是新的 OpenGL 函数,并没有在标准 OpenGL 库中实现,或者它们是用来扩展已存在的 OpenGL 函数的功能。和 glu、glx 和 wgl 一样,这些 OpenGL 扩展是由硬件厂商和厂商组织开发的。OpenGL 扩展 (OpenGLExtention) 包含了大量的扩展 API 函数。 随着硬件的更新,硬件厂商首先向 SGI 申请登记新的扩展,编写规格说明书(specification)。然后按照说明书进行开发扩展程序。不同的 OpenGL 实现(OpenGL Implementation)支持的扩展可能不一样,只有随着某一扩展的推广与应用以及硬件技术的提高该扩展才会在所有的 OpenGL 实现中被给予支持,从而最终成为 OpenGL 标准库的一部分。扩展由 SGI 维护,在 SGI 网站上列出了目前公开的已注册的扩展及其官方说明书。扩展源由扩展函数的后缀来指明 (或使用扩展常量后缀)。例如,后缀 WIN 表明一个符合 Windows 规范的扩展,EXT 或 ARB 后缀表明该扩展由多个卖主定义。

下面给出 OpenGL 官方规定的命名规则:

・ARB – OpenGL Architecture Review Board 正式核准的扩展,往往由厂商开发的扩展发展而来,如果同时存在厂商开发的扩展和 ARB 扩展,应该优先使用 ARB 扩展;

・EXT – 多家 OpenGL 厂商同意支持的扩展;

・HP – Hewlett-Packard 惠普;

• IBM – International Business Machines ;

• KTX – Kinetix, maker of 3D Studio Max ;

・INTEL – Intel 公司;

・NV – NVIDIA 公司;

• MESA – Brian Paul’s freeware portable OpenGL implementation ;

・SGI – Silicon Graphics 公司开发的扩展;

・SGIX – Silicon Graphics (experimental) 公司开发的实验性扩展;

• SUN – Sun Microsystems;

• WIN – Microsoft 。

由于 OpenGL 扩展在针对不同平台和不同驱动,OpenGL 不可能把所有的接口程序全部放到 gl.h、glx.h、wgl.h 中,而是将这些函数头放在了 glext.h、glxext.h 和 wglext.h 中。这些扩展被看作时 OpenGL 核心库规范的增加和修改。

# 9.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 设置视窗

# 10 . 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 将窗口坐标映射为对象坐标

# 11、 相关链接

1.OpenGL 中文手册:https://www.cnblogs.com/wiki3d/p/

2. 腾讯云 difcareer 的技术笔记:OpenGL API 简介:https://cloud.tencent.com/developer/article/1193463

3.freeglut 官方文档:http://freeglut.sourceforge.net/docs/api.php

4.OpenGL4.5 官方文档:https://www.khronos.org/registry/OpenGL-Refpages/gl4/

5.OpenGL4 官方文档:https://www.khronos.org/opengl/wiki/Category:Core_API_Reference

6.OpenGL2.1 官方文档:https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Lavender 微信支付

微信支付

Lavender 支付宝

支付宝