如何解决如何设置光线和材料以获得祖母绿物体
当我在 opengl 中为对象设置材质时 (glutSolidSphere(2.,10.,8.);),例如祖母绿参数:
float[] mat_ambient ={ 0.0215f,0.1745f,0.0215f,0.55f };
float[] mat_diffuse ={0.07568f,0.61424f,0.07568f,0.55f };
float[] mat_specular ={0.633f,0.727811f,0.633f,0.55f };
float shine = 76.8f;
为了获得真正的祖母绿物体,我应该以相同的方式设置光的成分吗?我的意思是:
float[] light_ambient ={ 0.0215f,0.55f };
float[] light_diffuse ={0.07568f,0.55f };
float[] light_specular ={0.633f,0.55f };
float[] light_position= { 1.0,1.0,0.0 };
结果并不好...
解决方法
如果您想用 Blinn–Phong reflection model 和 Gouraud shading 渲染绿色表面,您已经找到了答案。但是,您无法使用 20 年历史的 OpenGL 固定功能管道做任何更现实的事情。与您之前问题 How can I do a brass surface? 的评论中的原因相同。
使用 Gouraud 着色,光照模型是按顶点计算的,而 Phong shadding 是按片段计算的。在球体上使用更高的分辨率来改善照明并获得一些镜面高光。请参阅 GLSL fixed function fragment program replacement 和 What's the difference between Phong shading and Gouraud shading?。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。