`
473687880
  • 浏览: 483985 次
文章分类
社区版块
存档分类
最新评论

材质的颜色

 
阅读更多

在OpenGL的绘制中,我们一般会给绘制物体加上颜色,根据场景的不同,有几下几种方法:

1. 无光照

在无光照模型下,是最简单的一种情形,在这种情况下,直接使用glColor*函数来设置每个顶点的颜色,这种方法简单直接。

2.有光照

在有光照的模型下,模型的颜色受以下几方面的影响:光源的颜色属性 ,以及通过glMaterial*()设置的材质的属性。同时glColor*()命令将失去作用。但是我们可以用glEnable(GL_COLOR_MATERIAL)

如果调用了glEnable(GL_COLOR_MATERIAL),那么就会使光照模型中的几种光根据glColor*()中的指定确定颜色:void glColorMaterial(GLenum face, GLenum mode);其中face的取值GL_FRONT, GL_BACK与GL_FRONT_AND_BACK(默认值)mode的取值为GL_EMISSION, GL_AMBIENT,GL_DIFFUSE, GL_SPECULAR与GL_AMBIENT_AND_DIFFUSE(默认值)

例如:

glEnable(GL_COLOR_MATERIAL); 
glColorMaterial(GL_FRONT, GL_DIFFUSE); 
/* now glColor* changes diffuse reflection */ 
glColor3f(0.2, 0.5, 0.8); 
/* draw some objects here */
glColorMaterial(GL_FRONT, GL_SPECULAR); 
/* glColor* no longer changes diffuse reflection */ 
/* now glColor* changes specular reflection */ 
glColor3f(0.9, 0.0, 0.2); 
/* draw other objects here */ 
glDisable(GL_COLOR_MATERIAL);



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics