2012-06-18 73 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。