最近,我开始用qt3d(与它的QGlView和QGLSceneNode)。 我提供每个顶点的法线的生成模式,现在想用GL_FLAT阴影模型建模我的应用程序。 但要glShadeModel(GL_FLAT)犯规简单的调用做任何事情 - 阴影正在做的样子在平稳模式
我试图找到其中qt3d / qopengl调用该功能,但除了QGLBuilder找不到任何东西。
在我看来,我必须做QOpenGLContext一件让原生OpenGL函数的工作(我有一些其他的OpenGL函数相同的问题)
也许QGLPainter / QGLSceneNode内部设置阴影模型,我还没有在所有使用它?
我猜你已经找到了解决办法还是放弃了,但如果完整性我理解正确的,你这个应该有所帮助:
QGLPainter
经由绘图(描绘)时将被使用的“高电平”效应设置着色程序QGLSceneNode
秒。 还有您可以使用此功能设置一些标准的影响:
void QGLPainter::setStandardEffect(QGL::StandardEffect effect);
该标准的影响被定义在文件中 。 如果你不能找到你想要的东西,你可以使用此功能通过用户的影响:
void QGLPainter::setUserEffect(QGLAbstractEffect * effect)
QGLShaderProgramEffect
继承QGLAbstractEffect
,是你在这种情况下,寻找类。
另请注意,Qt3D是像一个“高级别”的OpenGL的包装。 直接调用OpenGL命令是不是在大多数情况下,“正确的方法”(除了初始化代码和其他一些东西)。 你应该告诉Qt3D以及如何渲染什么,而不是OpenGL的API。