1、glShadeModel
void glShadeModel ( GLenum mode);
mode 取值:GL_FLAT、GL_SMOOTH
OpenGL1.0提供的接口。作用:设置着色模式。
参数mode可以是GL_SMOOTH(默认值)或GL_FLAT。
采用恒定着色时(即GL_FLAT),使用图元中某个顶点的颜色来渲染整个图元。
在使用光滑着色时(即GL_SMOOTH),独立的处理图元中各个顶点的颜色。对于线段图元,线段上各点的颜色将根据两个顶点的颜色通过插值得到。对于多边形图元,多边形内部区域的颜色将根据所有顶点的颜色插值得到。
2、深度测试的类型:glDepthFunc
gl.glHint3、 gl.glHintgl.glClearDepthf(1.0f)
gl.glEnable(GL10.GL_DEPTH_TEST)
gl.glDepthFunc(GL10.GL_LEQUAL)
glDepthFunc
功能:指定用于深度缓冲比较值。
参数说明:func指定深度比较函数,GL_NEVER,GL_LESS,GL_EQUAL,GL_LEQUAL,GL_GREATER,GL_NOTE_QUAL,GL_GEQUAL,GL_ALWAYS,缺省值GL_LESS,
GL_NEVER,不通过(输入的深度值不取代参考值)
GL_LESS,如果输入的深度值小于参考值,则通过
GL_EQUAL,如果输入的深度值等于参考值,则通过
GL_LEQUAL,如果输入的深度值小于或等于参考值,则通过
GL_GREATER,如果输入的深度值大于参考值,则通过
GL_NOTE_QUAL,如果输入的深度值不等于参考值,则通过
GL_GEQUAL,如果输入的深度值大于或等于参考值,则通过
GL_ALWAYS,总是通过(输入的深度值取代参考值)
4、 glMatrixMode函数原型:
void glHint(GLenum target,GLenum mod)
参数说明:
target:指定所控制行为的符号常量,可以是以下值
GL_FOG_HINT:指定雾化计算的精度。如果OpenGL实现不能有效的支持每个像素的雾化计算,则GL_DONT_CARE和GL_FASTEST雾化效果中每个定点的计算。
GL_LINE_SMOOTH_HINT:指定反走样线段的采样质量。如果应用较大的滤波函数,GL_NICEST在光栅化期间可以生成更多的像素段。
GL_PERSPECTIVE_CORRECTION_HINT:指定颜色和纹理坐标的差值质量。如果OpenGL不能有效的支持透视修正参数差值,那么GL_DONT_CARE 和 GL_FASTEST可以执行颜色、纹理坐标的简单线性差值计算。
GL_POINT_SMOOTH_HINT:指定反走样点的采样质量,如果应用较大的滤波函数,GL_NICEST在光栅化期间可以生成更多的像素段。
GL_POLYGON_SMOOTH_HINT:指定反走样多边形的采样质量,如果应用较大的滤波函数,GL_NICEST在光栅化期间可以生成更多的像素段。
mod:指定所采取行为的符号常量,可以是以下值
GL_FASTEST:选择速度最快选项。
GL_NICEST:选择最高质量选项。
GL_DONT_CARE:对选项不做考虑。
函数说明:
该函数控制OpenGL在某一方面有解释的余地时,所采取的操作行为。
简述
glMatrixMode - 指定哪一个矩阵是当前矩阵
参数
mode 指定哪一个矩阵堆栈是下一个矩阵操作的目标,可选值: GL_MODELVIEW、GL_PROJECTION、GL_TEXTURE.
说明
glMatrixMode设置当前矩阵模式:
GL_MODELVIEW,对模型视景矩阵堆栈应用随后的矩阵操作.
GL_PROJECTION,对投影矩阵应用随后的矩阵操作.
GL_TEXTURE,对纹理矩阵堆栈应用随后的矩阵操作.
与glLoadIdentity()一同使用
glLoadIdentity():该函数的功能是重置当前指定的矩阵为单位矩阵。
在glLoadIdentity()之后我们为场景设置了透视图。glMatrixMode(GL_MODELVIEW)设置当前矩阵为模型视图矩阵,模型视图矩阵储存了有关物体的信息。
glMatrixMode与gluPerspective函数的使用
GL_MODELVIEW 是模型矩阵GL_PROJECTION 是投影矩阵。 gluPerspective的是创建一个投影矩阵并且与当前矩阵相乘,得到的矩阵设定为当前变换,但要先通过glMatrixMode设定成投影矩阵才会得到想要的投影矩阵变换。
例如:
glMatrixMode(GL_MODELVIEW);
......glMatrixMode(GL_PROJECTION);
gluPerspective(45.0f,(GLfloat)cx/(GLfloat)cy,0.1f,100.0f);
可以出来结果,反之,换位置后;
glMatrixMode(GL_MODELVIEW);
......
gluPerspective(45.0f,(GLfloat)cx/(GLfloat)cy,0.1f,100.0f);
glMatrixMode(GL_PROJECTION);
则,投影矩阵位置不正确.