Seite 1 von 1

OpenGL Overlay in einer 3D Szene mit DirectX

Verfasst: 21. August 2008 21:51
von Nash
Wie kann ich ein einfaches 2D Overlay(wie in den Beispielen ein einfacher 2D-Text) auf eine Szene rendern die DirectX nutzt?

Vorher hab ich ein einfaches QWidget genutzt aber den Text nicht gesehen.
Nun nutze ich das QGLwidget und sehe schon immerhin mal den Text.
Aber leider zeichnet er den Text nicht transparent auf auf 3D Szene sondern er füllt den restligen Teil des Bildes komplett mit Grau oder so..obwohl er es laut den Code gar nicht machen dürfte.

Code: Alles auswählen

// hier rendere ich meine 3D Szene mit DirectX
renderTheWindow();	

	QPainter p(this); // used for text overlay
	const QString str1(tr("A simple OpenGL framebuffer object example."));
	const QString str2(tr("Use the mouse wheel to zoom, press buttons and move mouse to rotate, double-click to flip."));

	p.setPen(QColor(197, 197, 197, 157));
	p.setBrush(QColor(197, 197, 197, 127));
	p.drawRect(QRect(0, 0, width(), 50));
	p.setPen(Qt::black);
	p.setBrush(Qt::NoBrush);


	QFontMetrics fm(p.font());
	p.drawText(width()/2 - fm.width(str1)/2, 20, str1);
	p.drawText(width()/2 - fm.width(str2)/2, 20 + fm.lineSpacing(), str2);
Daraus reultiert natürlich ein flickern zwischen meiner 3D Szene und den Text.

Weiß jemand rat? wie ich das flickern verhindern kann?

Verfasst: 24. August 2008 22:03
von Nash
Hat denn keiner ne Idee?

Verfasst: 21. Januar 2010 16:53
von Neuling_
gabs ne Lösung?