OpenGL中的颜色、光照和材质(六)——某个光照方案
来源:互联网 发布:软件下载万一网 编辑:程序博客网 时间:2024/05/17 09:16
六、某个光照方案
本光照方案用于某CAD系统,因为只需体现对象的立体感,所以只考虑辐射光和漫射光,忽略环境光和镜面光。假定对象颜色为”R,G,B” ,辐射光材质取”0.4*R, 0.4*G, 0.4*B”,作为对象的底色,与光源无关,与法向无关。漫射光取”0.5, 0.5, 0.5”,漫射光材质取”R, G, B” ,对象表面的明暗效果随表面法向的不同而不同。
1.设置光照模式
GLfloat lightmodel_ambient[]={0.0, 0.0, 0.0, 1.0}; //全局环境光glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lightmodel_ambient); //全局环境光glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 0); //远视点glLightModeli(LIGHT_MODEL_TWO_SIDE, 0); //单面光照
2.设置光源1
glEnable(GL_LIGHTING); //打开光照计算glEnable(GL_LIGHT0); //启动光源0glEnable(GL_LIGHT1); //启动光源1//光源1GLfloat light0_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; //环境光GLfloat light0_diffuse[] = { 0.5, 0.5, 0.5, 1.0 }; //漫射光GLfloat light0_specular[] = { 0.0, 0.0, 0.0, 1.0 }; //镜面反射光GLfloat light0_position[] = { 0.4, 0.8, 0.6, 0.0 }; //平行光方向glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient);glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse);glLightfv(GL_LIGHT0, GL_SPECULAR, light0_specular);glLightfv(GL_LIGHT0, GL_POSITION, light0_position);
3.设置光源2
GLfloat light1_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; //环境光GLfloat light1_diffuse[] = { 0.5, 0.5, 0.5, 1.0 }; //漫射光GLfloat light1_specular[] = { 0.0, 0.0, 0.0, 1.0 }; //镜面反射光GLfloat light1_position[] = { -0.4, -0.8, 0.6, 0.0 }; //平行光方向glLightfv(GL_LIGHT1, GL_AMBIENT, light1_ambient);glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse);glLightfv(GL_LIGHT1, GL_SPECULAR, light1_specular);glLightfv(GL_LIGHT1, GL_POSITION, light1_position);
4.设置材质
GLfloat mat_emission[] = { 0.4*R, 0.4*G, 0.4*B, 1.0}; //辐射光材质GLfloat mat_ambient[] = { 0.0, 0.0, 0.0, 1.0}; //环境光材质GLfloat mat_diffuse[] = { R, G, B, 1.0}; //漫射光材质GLfloat mat_specular[] = { 0.0, 0.0, 0.0, 1.0 }; //镜面光材质GLfloat mat_shininess[] = { 100.0 }; //镜面指数glMaterialfv(GL_FRONT,GL_EMISSION, mat_emission);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, mat_shininess);
5.光照方向示意图
6.光照效果图
- OpenGL中的颜色、光照和材质(六)——某个光照方案
- OpenGL中的颜色、光照和材质(一)——OpenGL的光照模型
- OpenGL光照和材质
- OpenGL 光照和材质
- OpenGL中的光照和颜色
- OpenGL基本概念入门4——颜色、光照和材质1
- OpenGL基本概念入门4——颜色、光照和材质2
- OpenGL基本概念入门4——颜色、光照和材质3
- 转:OpenGL基本概念入门4——颜色、光照和材质2
- OpenGL材质和光照(转)
- OpenGL——材质、光照与混合
- OpenGL(四)光照材质
- 学习OpenGL(五)颜色、光照与材质
- [OPENGL]纹理,材质,光照
- [OPENGL]纹理,材质,光照
- [OPENGL]纹理,材质,光照
- Opengl中光照、材质
- OpenGL中的光照、材质等属性
- Git常用命令备忘
- easymock源代码学习笔记(1)
- .NET 4.0中使用内存映射文件实现进程通讯
- Linux内核分析 - 网络[十二]:UDP模块 - 收发
- 1352 找出数组中和为k的两个数
- OpenGL中的颜色、光照和材质(六)——某个光照方案
- 字节流和字符流区别
- 黑马程序员----JAVA基础2
- C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped
- cortex-A8上3G模块的支持
- hdu1969之二分查找
- C语言通讯录管理系统
- 黑马程序员---JAVA基础3
- 程序员求职之道(《程序员面试笔试宝典》)之学业与求职,孰轻孰重?