我在左下角有一個x,y,z軸,爲用戶提供了一個方向的概念。我想用適當的x,y和z標籤標記這些軸。在OpenGL中爲Qt項目繪製軸文本標籤
我知道我不想用Glut來完成這件事,因爲它已經陳舊而且過時了,並且想知道是否可以利用QPainter來幫助標記這些軸。
注:我已經看到了這一點,但發現它太多:http://nehe.gamedev.net/tutorial/bitmap_fonts/17002/
我在左下角有一個x,y,z軸,爲用戶提供了一個方向的概念。我想用適當的x,y和z標籤標記這些軸。在OpenGL中爲Qt項目繪製軸文本標籤
我知道我不想用Glut來完成這件事,因爲它已經陳舊而且過時了,並且想知道是否可以利用QPainter來幫助標記這些軸。
注:我已經看到了這一點,但發現它太多:http://nehe.gamedev.net/tutorial/bitmap_fonts/17002/
可以使用了QPainter得出任何繪圖設備上的文字。 QGLWidget就是這樣一種繪畫設備;然後QPainter將使用OpenGL繪製文本(或任何你想繪製的)。您正在使用QGLWidget來繪圖來繪製場景猜測,你可以把QPainter的東西在你的paintEvent結束:
MyGLWidget::paintEvent(QPaintEvent *event)
{
// draw OpenGL scene
// ...
// draw labels:
QPainter p(this);
p.drawText(..., ..., "X");
p.drawText(..., ..., "Y");
p.drawText(..., ..., "Z");
p.end();
}
很好的答案;然而,我提前自己:( QPainter不會工作,因爲我的代碼不在'QWidget'內,因此,我沒有'paintEvent()'函數 – user869525
@ user869525這就是爲什麼我問;)哪個對象是你繪製你的場景?如果它是一個QPaintDevice,你可以把代碼放在任何地方,並用'QPainter p;添加替代'QPainter p(this);'; p.begin(本);'。但我從來沒有嘗試過,它可能有效,也可能不會;) – leemes
因爲(你說)由於某種原因你無法訪問QPainter,所以你需要一些OpenGL的字體渲染庫。您可以使用FTGL或者您可以使用freetype 2製作自己的渲染器。從Qt版本4.8.1開始,應該可以使用QRawFont(不必直接處理freetype)來訪問各個字形,這可以使實現自己的字體渲染例程變得更容易。
如果您的對象是QPaintDevice或QGLWidget,則使用QPainter。它可能比傳統的紋理字體慢,但它會爲您節省(從)另一個編碼頭痛。
那麼你已經畫出了線?您可以發表這段代碼,以便我們可以向您推薦適合您現有代碼的東西嗎? – leemes
沒有真正相關。我只是想知道如何在OpenGL中繪製文本。然後從那裏我將能夠應用到我的軸。 – user869525
「如何在OpenGL中繪製文本」不是很具體。 Qt包含很多與OpenGL一起運行的包裝器,其中一個是QGLWidget上的QPainter。你在這樣一個QGLWidget上繪製你的場景嗎? – leemes