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" 属性上)。
当使用 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" 属性上)。