我試圖在渲染的3D紋理上顯示文本疊加(基本上是一個顯示我的鍵盤快捷鍵的幫助屏幕)。紋理效果很好,我爲用戶準備了一些東經旋轉和翻譯。調用glRasterPos2i和glutBitmapString存在ModelView變換
我的想法是使用
const unsigned char tmp[100] = "text to render";
glRasterPos2i(x, y);
glColor4b(255, 255, 255, 255);
glutBitmapString(GLUT_BITMAP_HELVETICA_18, tmp);
正如How do I use glutBitmapString() in C++ to draw text to the screen?建議。
這很好用,只不過文本與對象一起旋轉而不是保留在屏幕上的靜態位置。我看了一些資料,發現當你操縱的模型視圖矩陣glRasterPos功能操作:
的物體座標由glRasterPos提出被視爲就像那些glVertex命令:它們是由當前模型視圖轉換和投影矩陣並傳遞到裁剪階段。
- Source
然後我通過另一篇文章,你可以壓入和彈出用glPushMatrix和glPopMatrix當前矩陣中。
- Source
當我這樣做,文本會一起消失。起初我以爲我可能對文本有錯誤的座標,但我以.01的間隔嘗試了x = y = 0到x = y = 25,並且從未看到過文本。我仍然有可能誤解了應該在哪裏繪製,但我不確定接下來要做什麼。
我的拉動作用是調用一些類似於:
glLoadIdentity();
glPushMatrix();
glTranslatef(0,0,-sdepth);
glRotatef(-stheta, 1.0, 0.0, 0.0);
glRotatef(sphi, 0.0, 0.0, 1.0);
glRotatef(rotateX,0,1,1);
glRotatef(rotateY,1,0,0);
glTranslatef(-0.5,-0.5,-0.5);
glPopMatrix();
glRasterPos2i(2, 2);
glColor4b(255, 255, 255, 255);
glutBitmapString(GLUT_BITMAP_HELVETICA_18, tmp);
任何人有調試/故障排除步驟的建議,試圖讓這個文字在屏幕上的單一,靜態的位置上顯示?
你如何設置你的投影矩陣? – genpfault 2012-01-06 06:54:58