2012-06-18 59 views
1

最近我开始使用qt3d(与它的QGlView和QGLSceneNode)。我为生成的模型提供了每顶点法线,并且现在要为我的建模应用使用GL_FLAT着色模型。但简单地调用glShadeModel(GL_FLAT)不会做任何事情 - 着色看起来像平滑模式Qt3d + glShadeModel

我试图找到qt3d/qopengl调用该函数的位置,但除QGLBuilder之外找不到任何东西。

在我看来,我必须做QOpenGLContext一件让原生OpenGL函数的工作(我有一些其他的OpenGL函数相同的问题)

也许QGLPainter/QGLSceneNode内部设置阴影模型,我没有使用它呢?

回答

0

我想你已经找到了解决办法还是放弃了,但对于完整性这应该帮助,如果我理解正确的你:

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。