OpenGL 常用 API

OpenGL 常用 API

注:本文结合网络 + 自己理解

       OpenGL的库函数,采用C语言风格,提供大量的函数来进行图形的处理和显示。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 核心库

       核心库包含有115个函数,函数名的前缀为gl。这部分函数用于常规的、核心的图形处理。此函数由gl.dll来负责解释执行。由于许多函数可以接收不同数以下几类。据类型的参数,因此派生出来的函数原形多达300多个。核心库中的函数主要可以分为以下几类函数:

  • 绘制基本几何图元的函数:
    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()


你可能感兴趣的:(OpenGL)