在使用OpenGL时,可以使用函数glShadeModel来更改法线计算。在使用Qt3D时,默认情况下,glShadeModel似乎是GL_SMOOTH。是否可以使用QML glShadeModel将GL_FLAT设置为Qt3D?
这个问题有一个主题(Qt3d + glShadeModel),但它似乎过时了。
发布于 2016-08-27 17:21:28
Qt3D是围绕可编程管道构建的,因此没有所谓的“阴影模型”。你必须提供一种做平阴影的材料。
我不确定是否有现成的,但你可以轻松地写你自己的。
如果您使用的是一个体面的GLSL版本,那么只需要将输出从顶点着色器传播到输入片段着色器,并将它们标记为flat。flat在GLSL中的意思是“禁用跨原语的这个值的插值;相反,在从原语中栅格化的所有片段中使用发端点的值”。
flat
如果您想支持较早版本的GLSL,就无法禁用这种插值,因此必须为所有原语复制顶点数据,并为给定原语的每个顶点数据提供相同的值(例如,在"color“属性上)。
https://stackoverflow.com/questions/39181189
相似问题