我怎样才能不使用着色器使phong照明(大学任务)。 我可以手动计算环境,漫射,镜面,并将它们的总和转移到glcolor吗?
UPD:我有一个很好的显示来自环境和漫射的总和。 但是镜面不能正确渲染,它变得非常分散。
我在图片中的问题:
在此处输入图像说明
我的代码:
(最初的问题是:我能在不使用glMaterial或着色器的情况下产生镜面高光吗)
不。
以一个大三角形为例,其中角部只被漫射光点亮,而你想要在中间有一个镜面高光。 边角处的照明方程没有(显著的)镜面贡献,所以你只能将漫射色作为GLCOLOR传递。
OpenGL将简单地线性插值三个角之间的颜色; 它不会神奇地在中间生成一个镜面高光,除非你a)使用glMaterial告诉它碎片应该如何与光照设置交互,或者b)编写一个碎片着色器来评估每个碎片的光照方程。
2020年,只需使用着色器。