Qt3D 中的 glShadeModel

glShadeModel in Qt3D

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

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

Qt3D 是围绕可编程管道构建的,因此没有 "shade model" 这样的东西。您必须提供执行平面着色的 Material。

我不确定是否提供现成的,但您可以轻松编写自己的。

如果您使用的是合适版本的 GLSL,只需将顶点着色器的输出传播到片段着色器的输入,并将它们标记为 flat. flat in GLSL means "disable interpolation of this value across the primitive; instead, use the value of the provoking vertex 从该图元光栅化的所有片段”。

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