J'essaie d'afficher HUD sur ma partie 3D. Pour commencer, j'essaie juste d'afficher "Hello World", mais je n'ai pas encore eu de succès! La scène gèle/scintille une fois que j'ai terminé. J'utilise Qt/C++ et QGLWdiget/QPainter pour y arriver. J'ai utilisé overpainting example comme référence pour commencer. Voici ce que je fais:2d HUD ne dessine pas correctement sur QGLWidget (avec QPainter)
- override paintEvent (...) dans mon sous-classé GameGL classe (GameGL: QGLWidget public)
- Poussez la matrice openGL MODELVIEW comme la matrice actuelle
- permettent paramètres comme gl_depth_test
- rendre mon jeu (:: paintGL1())
- désactiver les paramètres de MODELVIEW
matrice modelview pop
Marque objet QPainter
- invoquer paint.drawText()
- Rincer à l'aide paint.end()
C'est à peu près le même que celui mentionné dans l'exemple. Cependant, lorsque j'exécute ce code, il subit un gel/scintillement et est très peu réactif. Quelqu'un aurait-il une idée de la raison pour laquelle cela pourrait se produire? J'apprécierais vraiment toute aide.
Code: makeCurrent(); glMatrixMode (GL_MODELVIEW); glPushMatrix();
//Black background
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);//.50f, 1.0f);
//glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
//glEnable(GL_CULL_FACE);
glEnable(GL_LIGHTING);
m_pLight->SetupLight(GL_AMBIENT | GL_DIFFUSE | GL_SPECULAR);
glEnableClientState(GL_INDEX_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
resizeGL(width(), height());
paintGL1();
//glShadeModel(GL_FLAT);
glDisable(GL_DEPTH_TEST);
//glDisable(GL_CULL_FACE);
glDisable(GL_LIGHTING);
glDisableClientState(GL_INDEX_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.drawText(100, 50, QString("Hello"));
painter.end();
Merci
Pouvez-vous jeter un coup d'œil à [ce fil] (http://stackoverflow.com/q/8446437/176769)? – karlphillip