opengl 材质
来源:互联网 发布:照片后期特效软件 编辑:程序博客网 时间:2024/04/29 09:24
材质RGB值和光源RGB值的关系
材质的颜色与光源的颜色有些不同。对于光源,R、G、B值等于R、G、B对其最大强度的百分比。若光源颜色的R、G、B值都是1.0,则是最强的白光;若值变为0.5,颜色仍为白色,但强度为原来的一半,于是表现为灰色;若R=G=1.0,B=0.0,则光源为黄色。对于材质,R、G、B值为材质对光的R、G、B成分的反射率。比如,一种材质的R=1.0、G=0.5、B=0.0,则材质反射全部的红色成分,一半的绿色成分,不反射蓝色成分。也就是说,若OpenGL的光源颜色为(LR、LG、LB),材质颜色为(MR、MG、MB),那么,在忽略所有其他反射效果的情况下,最终到达眼睛的光的颜色为(LR*MR、LG*MG、LB*MB)。
同样,如果有两束光,相应的值分别为(R1、G1、B1)和(R2、G2、B2),则OpenGL将各个颜色成分相加,得到(R1+R2、G1+G2、B1+B2),若任一成分的和值大于1(超出了设备所能显示的亮度)则约简到1.0。
下面先给出一段设置材质的代码:
glEnable(GL_COLOR_MATERIAL); const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f }; const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f }; const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; const GLfloat high_shininess[] = { 100.0f }; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
其中
glEnable(GL_COLOR_MATRIAL); 启动颜色材质,可以在激活光照的情况下,使用glColor3f给物体上色。
GL_SHININESS:镜面指数,取值范围为0-128,该值越小,表示材质越粗糙,点光源发射的光线照射到上面,也可以产生较大的亮点。该值越大,表示材质越类似于镜面,光源照射到上面后,产生较小的亮点。
1 0
- OPENGL材质
- OpenGL材质
- opengl 材质
- OpenGL--材质
- OpenGL 材质效果 (转)
- OpenGL - Material (材质)
- [OPENGL]纹理,材质,光照
- OpenGL材质的应用
- [OPENGL]纹理,材质,光照
- [OPENGL]纹理,材质,光照
- Opengl中光照、材质
- OpenGL光照和材质
- OpenGL应用开发---材质
- OpenGL材质的设置
- OpenGL 光照和材质
- OpenGL材质和光照(转)
- OPENGL 材质贴图 (一)
- OpenGL ES五 – 材质
- 参数估计:最大似然、贝叶斯与最大后验
- FindBugs PMD 和CheckStyle对比
- 星球大战
- url-pattern编写形式:【/与/*的区别】【url-pattern可以编写多个】
- 【2016.3-2016.9】年总结——速度与激情
- opengl 材质
- java 中int 与 Integer 的一个不同
- Redis的五种对象类型及其底层实现
- 事件流,事件对象
- POJ 1284 primitive roots
- 数据库-索引
- node.js待补充
- Luogu T1125 why_always_I_like_素数 解题报告
- 近期参加的各大公司面试总结