Ich versuche, HUD über mein 3D-Spiel anzuzeigen. Für den Anfang versuche ich nur "Hallo Welt" anzuzeigen, aber ich hatte noch keinen Erfolg! Die Szene erstarrt/flackert, sobald ich fertig bin.2d HUD nicht ordnungsgemäß über QGLWidget zeichnen (mit QPainter)
Ich verwende Qt/C++ und QGLWdiget/QPainter, um dies zu tun. Ich habe overpainting example als meine Referenz verwendet, um loszulegen. Hier ist, was ich tue:
- Überschreibung paintEventO (...) in meinem eigenen subclassed GameGL Klasse (GameGL: public QGLWidget)
- Push-openGL Modelview Matrix als die aktuelle Matrix
- ermöglichen Parameter wie GL_DEPTH_TEST
- mein Spiel machen (:: paintGL1())
- die Model-View-Parameter deaktivieren
pop Model-View-Matrix
Fabrikat QPainter Objekt
- aufrufen paint.drawText()
- Flush mit paint.end()
Das ist so ziemlich das gleiche wie in dem Beispiel erwähnt. Wenn ich diesen Code ausführe, erleidet er jedoch ein Einfrieren/Flackern und reagiert sehr unempfindlich. Hätte jemand eine Idee, warum das passieren könnte? Ich würde wirklich jede Hilfe schätzen.
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();
Danke
Können Sie sich bitte [dieses Thema] (http://stackoverflow.com/q/8446437/176769) ansehen? – karlphillip