颜色使用 glShadeModel,glColor,glColorMask
1.glShadeModel?:选择平面明暗模式或光滑明暗模式
C语言描述
voidglShadeModel( GLenum mode )
参数
mode 指定表示明暗模式的符号值,可以选择GL_FLAT(平面明暗模式)和GL_SMOOTH(光滑明暗模式),缺省值为GL_SMOOTH。
说明
OpenGL图元需要进行明暗处理,处理得模式可以为平面明暗模式或光滑(Gouraud着色)明暗模式。光滑明暗模式时,多边形各个内部点的颜色是根据各顶点指定的颜色来插值得到的,这意味着两个顶点之间的颜色是从一顶点的颜色渐变到另一顶点的颜色。对于平面明暗模式,整个图元区域的颜色就是最后一个顶点指定的颜色,唯一例外的是GL_POLYGON,这是整个区域的颜色是第一个顶点所指定的颜色。但要注意,如果激活了光照,计算到的顶点颜色都是光照后的结果颜色,若光照关闭,计算到的颜色就是指定顶点时的当前颜色。
2.glColor?:设置当前颜色
C语言描述
voidglcolor3b(GLbyte red,GLbytegreen,GLbyte blue);
voidglcolor3d(GLdouble red,GLdoublegreen,GLdouble blue);
voidglcolor3f(GLfloat red,GLfloatgreen,GLfloat blue);
voidglcolor3i(GLint red,GLintgreen,GLint blue);
voidglcolor3s(GLshort red,GLshortgreen,GLshort blue);
voidglcolor3ub(GLubyte red,GLubytegreen,GLubyte blue);
voidglcolor3ui(GLuint red,GLuintgreen,GLuint blue);
voidglcolor3us(GLushort red,GLushortgreen,GLushort blue);
voidglcolor4b(GLbyte red,GLbytegreen,GLbyte blue,GLbytealpha);
voidglcolor4d(GLdouble red,GLdoublegreen,GLdoubleblue,GLdouble alpha);
voidglcolor4f(GLfloat red,GLfloatgreen,GLfloatblue,GLfloat alpha);
voidglcolor4i(GLint red,GLintgreen,GLint blue,GLintalpha);
voidglcolor4s(GLshort red,GLshortgreen,GLshortblue,GLshort alpha);
voidglcolor4ub(GLubyte red,GLubytegreen,GLubyteblue,GLubyte alpha);
voidglcolor4ui(GLuint red,GLuintgreen,GLuint blue,GLuintalpha);
?? voidglcolor4us(GLushort red,GLushortgreen,GLushortblue,GLushort alpha);
voidglcolor3bv(const GLbyte *v);
voidglcolor3dv(const GLdouble *v);
voidglcolor3fv(const GLfloat *v);
voidglcolor3iv(const GLint *v);
voidglcolor3sv(const GLshort *v);
voidglcolor3ubv(const GLubyte *v);
voidglcolor3uiv(const GLuint *v);
voidglcolor3usv(const GLushort *v);
voidglcolor4bv(const GLbyte *v);
voidglcolor4dv(const GLdouble *v);
voidglcolor4fv(const GLfloat *v);
voidglcolor4iv(const GLint *v);
voidglcolor4sv(const GLshort *v);
voidglcolor4ubv(const GLubyte *v);
voidglcolor4uiv(const GLuint *v);
?? voidglcolor4usv(const GLushort *v);
参数
red,green,blue 指定当前颜色中的红、绿和蓝色成分。
alpha 指定颜色中的α成分。只有在glColor4函数带4个变量时才指定此参数。
*v 指定一个指向包含红、绿、蓝和alpha值的数组指针。
说明
本函数通过指定红、绿、蓝的颜色成分来设置当前的颜色,同时部分函数可以接受α成分。每个成分亮度的表示范围是从零(0.0)到全光强(1.0),当指定了非浮点类型时,该类型从0到最大值的表示法与浮点类型范围的0.0到1.0相映射。
3.glColorMask?:激活或关闭帧缓存颜色分量的写操作
C语言描述
voidglColorMask(GLboolean red,GLbooleangreen,GLbooleanblue,GLboolean alpha)
参数
?? ?red,green,blue,alpha 指定红、绿、蓝和α成分是否可以修改。
说明
本函数指定是否可以将单个的颜色分量写入帧缓存。例如,若red为GL_FALSE,那么不管执行什么样的绘制操作,任何颜色缓存中任何像素的红色分量均不被改变。