Qt3D中的glShadeModel

时间:2016-08-27 12:33:58

标签: qt qml qt3d

使用OpenGL时,有一个函数glShadeModel,您可以使用它来更改法线计算。看来当你使用Qt3D时,默认的glShadeModel是GL_SMOOTH。是否可以使用QML Qt3D将glShadeModel设置为GL_FLAT?

关于这个问题有主题(Qt3d + glShadeModel),但它似乎已经过时了。

1 个答案:

答案 0 :(得分:2)

Qt3D是围绕可编程管道构建的,所以不存在"阴影模型"。您必须提供具有平面着色的材质。

我不确定是否提供开箱即用,但您可以轻松编写自己的。

如果你正在使用一个体面的GLSL版本,只需要从顶点着色器传播输出来输入片段着色器并将它们标记为flat。 GLSL中的flat表示"禁止在原语中插入此值;相反,在该原语"中光栅化的所有片段中使用provoking vertex的值。

如果您想支持旧版本的GLSL,则无法禁用此类插值,因此您必须复制所有图元的顶点数据,并为给定图元的每个顶点数据副本赋予相同的值(例如,在"颜色"属性上)。