Qt3d + glShadeModel
Posted
技术标签:
【中文标题】Qt3d + glShadeModel【英文标题】: 【发布时间】:2012-06-18 22:27:45 【问题描述】:最近我开始使用 qt3d(使用它的 QGlView 和 QGLSceneNode)。我为生成的模型提供每个顶点法线,现在想为我的建模应用程序使用 GL_FLAT 着色模型。但是对 glShadeModel(GL_FLAT) 的简单调用并没有做任何事情 - 阴影看起来像在平滑模式下
我试图找到 qt3d/qopengl 调用该函数的位置,但除了 QGLBuilder 之外什么也找不到。
在我看来,我必须对 QOpenGLContext 做一些事情才能使本机 opengl 函数工作(我对其他一些 opengl 函数也有同样的问题)
或者 QGLPainter/QGLSceneNode 内部设置了着色模型,而我根本不用它?
【问题讨论】:
【参考方案1】:我猜你已经找到解决方案或放弃了,但为了完整起见,如果我理解正确,这应该会有所帮助:
QGLPainter
通过“高级”效果设置着色程序,然后在绘制(渲染)QGLSceneNode
s 时使用该效果。您可以使用此功能设置一些标准效果:
void QGLPainter::setStandardEffect(QGL::StandardEffect effect);
标准效果定义为in the documentation。如果你找不到你想要的,你可以使用这个函数传递一个用户效果:
void QGLPainter::setUserEffect(QGLAbstractEffect * effect)
QGLShaderProgramEffect
继承 QGLAbstractEffect
并且在这种情况下是您要查找的类。
还请注意,Qt3D 类似于“高级”OpenGL 包装器。在大多数情况下(除了初始化代码和其他一些事情),直接调用 OpenGL 命令并不是“正确的方法”。您应该告诉 Qt3D 渲染什么以及如何渲染,而不是告诉 OpenGL API。
【讨论】:
以上是关于Qt3d + glShadeModel的主要内容,如果未能解决你的问题,请参考以下文章