1. glGet:返往返所选择的参数值
C语言描述
void glGetBooleanv(GLenum pname, GLboolean *params);
void glGetDoublev(GLenum pname, GLdouble *params);
void glGetFloatv(GLenum pname, GLfloat *params);
void glGetIntegerv(GLenum pname, GLint *params);
参数
pname 指定返回的参数值,可以选择的符号常数看下面的说明。
params 返来回指定的参数值。
说明
本函数为OpenGL中简单状态变量返来回数值,如果params的数据类型并不是状态变量要求的数据类型,则执行类型转换。
下面是pname可以选择的部分符号常数:
GL_COLOR_CLEAR_VALUE params返往返四个值:用来清除颜色缓存的红色、绿色、蓝色和alpha值。如果需要,整数值由内部的浮点表达式进行线型映***,1.0返回最大的正整数,-1.0返往返最小的正整数值。
GL_COLOR_MATERIAL params返来回一个布尔数值,该值表示是否有一个或多个材质参数正在跟踪当前颜色。
GL_COLOR_MATERIAL_FACE params返来回一个数值,该值为符号常数,表示有哪些材质正在跟踪当前颜色的参数。
GL_COLOR_MATERIAL_PARAMETER params返往返一个数值,该值为符号常数,表示哪些材质参数正在跟踪当前颜色。
GL_CULL_FACE params返回一个布尔数值,该值表示是否能使多边形切割。
GL_CULL_FACE_MODE params返往返一个数值,该值为符号常数,它表示哪些多边形的面被剔除。
GL_CURRENT_COLOR params返回四个数值:当前颜色的红、绿、蓝和alpha值。
GL_CURRENT_NORMAL params返往返三个数值:当前法向量的x,y和z值。
GL_DOUBLEBUFFER params返往返一个布尔值,该值表示是否能支持双缓存。
GL_EDGE_FLAG params返往返一个布尔值,该值表示当前的边界标记是TRUE还是FALSE。
GL_FRONT_FACE params返来回一个数值,该值为符号常数,表示是顺时针多边形还是逆时针多边形为正面多边形。
GL_LIGHT_MODEL_AMBIENT params返往返四个数值:整个***中***浓度的红、绿、蓝和alpha值。
GL_LIGHT_MODEL_TWO_SIDE params返回一个布尔值,该值表示是否使用分离的材质计算正面多边形和反面多边形的光照。
GL_LINE_STIPPLE_PATTERN params返回一个数值,该值为16位直线点划图。
GL_LINE_STIPPLE_REPEAT params返往返一个数值,该值为直线点划图的重复因子。
GL_LINE_WIDTH params返来回一个数值,该值为当前指定的线宽。
GL_LINE_WIDTH_RANGE params返回两个数值,线段所支持的最小宽度和最大宽度。
GL_MAX_CLIP_PLANES params返来回一个数值,该值为应用程序定义的切割平面的最大数目。
GL_MAX_LIGHTS params返回一个数值,该值为光照的最大数目。
GL_MAX_MODELVIEW_STACK_DEPTH params返来回一个数值,该值为模型视图矩阵堆栈支持的最大深度。
GL_MAX_PROJECTION_STACK_DEPTH params返往返一个数值,该值为投影矩阵堆栈支持的最大深度。
GL_MODELVIEW_MATRIX params返来回16个数值:在模型视图矩阵堆栈顶层的模型视图矩阵。
GL_MODELVIEW_STACK_DEPTH params返回一个数值,该值为模型视图矩阵堆栈的矩阵数目。
GL_POINT_SIZE params返来回一个数值,该值为当前指定的点的大小。
GL_POINT_SIZE_RANGE params返回两个数值:点大小的最小值和最大值。
GL_POLYGON_MODE params返来回两个数值:指定是正面多边形还是反面多边形被光栅化为点、线或实多边形的符号常数。
GL_PROJECTION_MATRIX params返往返16个数值:在投影矩阵堆栈顶层的模型视图矩阵。
GL_ PROJECTION_STACK_DEPTH params返往返一个数值,该值投影矩阵堆栈的矩阵数目。
GL_SHADE_MODEL params返往返一个数值,该值为符号常数,表示阴影***是平面明暗***还是光滑明暗***。
GL_VIEWPORT params返往返四个数值:视口的x和y窗口坐标,接下来是视口的宽度和高度。
2.glGetClipPlane:返往返指定的切平面系数
C语言描述
void glGetClipPlane(GLenum plane, GLdouble *equation);
参数
plane 指定用GL_CLIP_PLANEi标示的切割平面。
*equation 返来回视点坐标中plane平面方程的系数。
说明
本函数可以***切割平面方程的四个系数。
3. glGetLight:返往返光源参数值
C语言描述
void glGetLightfv(GLenum light, GLenum pname, GLfloat *params);
void glGetLightiv(GLenum light, GLenum pname, GLint *params);
参数
light 指定名为GL_LIGHTi(0≤i≤GL_MAX_LIGHTS)。
pname 指定光源参数。
*param 返往返请求的数据。
说明
本函数用于获取光源的参数,pname指定的光源参数如下:
GL_AMBIENT params返回四个整数值或浮点数值,这些值表示光源的***RGBA浓度。
GL_DIFFUSE params返往返四个整数值或浮点数值,这些值表示光源的漫反***RGBA浓度。
GL_SPECULAR params返回四个整数值或浮点数值,这些值表示光源的镜面RGBA浓度。
GL_POSITION params返往返四个整数值或浮点数值,这些值表示光源的位置。
GL_SPOT_DIRECTION params返回三个整数值或浮点数值,这些值表示光源的方向。
GL_SPOT_EXPONENT params返往返一个整数值或浮点数值,它表示聚光源指数。
GL_SPOT_CUTOFF params返往返单个整数值或浮点数值,它表示聚光源的角度。
GL_CONSTANT_ATTENUATION params返来回单个整数值或浮点数值,它表示光照的恒定衰减值(与距离无关)。
GL_LINEAR_ATTENUATION params返回单个整数值或浮点数值,它表示光照的线性衰减值。
GL_QUADRATIC_ATTENUATION params返回单个整数值或浮点数值,它表示光照的二次衰减值。
4. glGetMaterial:返回材质参数
C语言描述
void glGetMaterialfv(GLenum face, GLenum panem, GLfloat *params);
void glGetMaterialiv(GLenum face, GLenum panem, GLint *params);
参数
face 指定查询的是哪个面的材质,必须为GL_FRONT、GL_BACK或GL_FRONT_AND_BACK。
pname 指定返来回的材质参数。
*params 返回请求的数据。
说明
本函数用于获取材质参数。pname可以选择的参数值如下:
GL_AMBIENT params返来回四个整数值或浮点数值,这些值表示材质***反***的RGBA值。
GL_DIFFUSE params返来回四个整数值或浮点数值,这些值表示材质漫反***的RGBA值。
GL_SPECULAR params返往返四个整数值或浮点数值,这些值表示材质镜面反***的RGBA值。
GL_EMISSION params返来回四个整数值或浮点数值,这些值表示材质漫反***光浓度的RGBA值。
GL_SHININESS params返来回单个整数值或浮点数值,这个值表示材质的RGBA镜面指数。
GL_COLOR_INDEXES params返来回三个整数值或浮点数值,这些值表示材质的***反***、漫***反***和镜面反***的颜色索引值。
1.9 窗口初始化和启动事件处理
1. glutInit:初始化GLUT库
C语言描述
void glutInit(int *argcp, char **argv);
参数
*argcp 指向main函数argc变量的指针。由于glutInit用于初始化GLUT库的命令行选项,因此当函数返来回时,argcp指向的数值会被更新。
*argv main函数的argv变量。
说明
本函数用来初始化GLUT库并同窗口系统对话协商。在此***中,如果GLUT不能正确初始化,glutInit函数将会终止GLUT程序,并将错误信息往返送给用户。
C语言描述
void glGetBooleanv(GLenum pname, GLboolean *params);
void glGetDoublev(GLenum pname, GLdouble *params);
void glGetFloatv(GLenum pname, GLfloat *params);
void glGetIntegerv(GLenum pname, GLint *params);
参数
pname 指定返回的参数值,可以选择的符号常数看下面的说明。
params 返来回指定的参数值。
说明
本函数为OpenGL中简单状态变量返来回数值,如果params的数据类型并不是状态变量要求的数据类型,则执行类型转换。
下面是pname可以选择的部分符号常数:
GL_COLOR_CLEAR_VALUE params返往返四个值:用来清除颜色缓存的红色、绿色、蓝色和alpha值。如果需要,整数值由内部的浮点表达式进行线型映***,1.0返回最大的正整数,-1.0返往返最小的正整数值。
GL_COLOR_MATERIAL params返来回一个布尔数值,该值表示是否有一个或多个材质参数正在跟踪当前颜色。
GL_COLOR_MATERIAL_FACE params返来回一个数值,该值为符号常数,表示有哪些材质正在跟踪当前颜色的参数。
GL_COLOR_MATERIAL_PARAMETER params返往返一个数值,该值为符号常数,表示哪些材质参数正在跟踪当前颜色。
GL_CULL_FACE params返回一个布尔数值,该值表示是否能使多边形切割。
GL_CULL_FACE_MODE params返往返一个数值,该值为符号常数,它表示哪些多边形的面被剔除。
GL_CURRENT_COLOR params返回四个数值:当前颜色的红、绿、蓝和alpha值。
GL_CURRENT_NORMAL params返往返三个数值:当前法向量的x,y和z值。
GL_DOUBLEBUFFER params返往返一个布尔值,该值表示是否能支持双缓存。
GL_EDGE_FLAG params返往返一个布尔值,该值表示当前的边界标记是TRUE还是FALSE。
GL_FRONT_FACE params返来回一个数值,该值为符号常数,表示是顺时针多边形还是逆时针多边形为正面多边形。
GL_LIGHT_MODEL_AMBIENT params返往返四个数值:整个***中***浓度的红、绿、蓝和alpha值。
GL_LIGHT_MODEL_TWO_SIDE params返回一个布尔值,该值表示是否使用分离的材质计算正面多边形和反面多边形的光照。
GL_LINE_STIPPLE_PATTERN params返回一个数值,该值为16位直线点划图。
GL_LINE_STIPPLE_REPEAT params返往返一个数值,该值为直线点划图的重复因子。
GL_LINE_WIDTH params返来回一个数值,该值为当前指定的线宽。
GL_LINE_WIDTH_RANGE params返回两个数值,线段所支持的最小宽度和最大宽度。
GL_MAX_CLIP_PLANES params返来回一个数值,该值为应用程序定义的切割平面的最大数目。
GL_MAX_LIGHTS params返回一个数值,该值为光照的最大数目。
GL_MAX_MODELVIEW_STACK_DEPTH params返来回一个数值,该值为模型视图矩阵堆栈支持的最大深度。
GL_MAX_PROJECTION_STACK_DEPTH params返往返一个数值,该值为投影矩阵堆栈支持的最大深度。
GL_MODELVIEW_MATRIX params返来回16个数值:在模型视图矩阵堆栈顶层的模型视图矩阵。
GL_MODELVIEW_STACK_DEPTH params返回一个数值,该值为模型视图矩阵堆栈的矩阵数目。
GL_POINT_SIZE params返来回一个数值,该值为当前指定的点的大小。
GL_POINT_SIZE_RANGE params返回两个数值:点大小的最小值和最大值。
GL_POLYGON_MODE params返来回两个数值:指定是正面多边形还是反面多边形被光栅化为点、线或实多边形的符号常数。
GL_PROJECTION_MATRIX params返往返16个数值:在投影矩阵堆栈顶层的模型视图矩阵。
GL_ PROJECTION_STACK_DEPTH params返往返一个数值,该值投影矩阵堆栈的矩阵数目。
GL_SHADE_MODEL params返往返一个数值,该值为符号常数,表示阴影***是平面明暗***还是光滑明暗***。
GL_VIEWPORT params返往返四个数值:视口的x和y窗口坐标,接下来是视口的宽度和高度。
2.glGetClipPlane:返往返指定的切平面系数
C语言描述
void glGetClipPlane(GLenum plane, GLdouble *equation);
参数
plane 指定用GL_CLIP_PLANEi标示的切割平面。
*equation 返来回视点坐标中plane平面方程的系数。
说明
本函数可以***切割平面方程的四个系数。
3. glGetLight:返往返光源参数值
C语言描述
void glGetLightfv(GLenum light, GLenum pname, GLfloat *params);
void glGetLightiv(GLenum light, GLenum pname, GLint *params);
参数
light 指定名为GL_LIGHTi(0≤i≤GL_MAX_LIGHTS)。
pname 指定光源参数。
*param 返往返请求的数据。
说明
本函数用于获取光源的参数,pname指定的光源参数如下:
GL_AMBIENT params返回四个整数值或浮点数值,这些值表示光源的***RGBA浓度。
GL_DIFFUSE params返往返四个整数值或浮点数值,这些值表示光源的漫反***RGBA浓度。
GL_SPECULAR params返回四个整数值或浮点数值,这些值表示光源的镜面RGBA浓度。
GL_POSITION params返往返四个整数值或浮点数值,这些值表示光源的位置。
GL_SPOT_DIRECTION params返回三个整数值或浮点数值,这些值表示光源的方向。
GL_SPOT_EXPONENT params返往返一个整数值或浮点数值,它表示聚光源指数。
GL_SPOT_CUTOFF params返往返单个整数值或浮点数值,它表示聚光源的角度。
GL_CONSTANT_ATTENUATION params返来回单个整数值或浮点数值,它表示光照的恒定衰减值(与距离无关)。
GL_LINEAR_ATTENUATION params返回单个整数值或浮点数值,它表示光照的线性衰减值。
GL_QUADRATIC_ATTENUATION params返回单个整数值或浮点数值,它表示光照的二次衰减值。
4. glGetMaterial:返回材质参数
C语言描述
void glGetMaterialfv(GLenum face, GLenum panem, GLfloat *params);
void glGetMaterialiv(GLenum face, GLenum panem, GLint *params);
参数
face 指定查询的是哪个面的材质,必须为GL_FRONT、GL_BACK或GL_FRONT_AND_BACK。
pname 指定返来回的材质参数。
*params 返回请求的数据。
说明
本函数用于获取材质参数。pname可以选择的参数值如下:
GL_AMBIENT params返来回四个整数值或浮点数值,这些值表示材质***反***的RGBA值。
GL_DIFFUSE params返来回四个整数值或浮点数值,这些值表示材质漫反***的RGBA值。
GL_SPECULAR params返往返四个整数值或浮点数值,这些值表示材质镜面反***的RGBA值。
GL_EMISSION params返来回四个整数值或浮点数值,这些值表示材质漫反***光浓度的RGBA值。
GL_SHININESS params返来回单个整数值或浮点数值,这个值表示材质的RGBA镜面指数。
GL_COLOR_INDEXES params返来回三个整数值或浮点数值,这些值表示材质的***反***、漫***反***和镜面反***的颜色索引值。
1.9 窗口初始化和启动事件处理
1. glutInit:初始化GLUT库
C语言描述
void glutInit(int *argcp, char **argv);
参数
*argcp 指向main函数argc变量的指针。由于glutInit用于初始化GLUT库的命令行选项,因此当函数返来回时,argcp指向的数值会被更新。
*argv main函数的argv变量。
说明
本函数用来初始化GLUT库并同窗口系统对话协商。在此***中,如果GLUT不能正确初始化,glutInit函数将会终止GLUT程序,并将错误信息往返送给用户。