2012-10-19 31 views
0

我與FTGL庫在OpenGL字體掙扎。例如,我仍然沒有想出如何將文本放在屏幕上的某處,而不是左下角。我目前正在使用像素字體,並開始嘗試使用glRasterPos爲什麼設置glRasterPos讓我ftgl文本消失?

下面的代碼「作品」,它顯示在底部的文本在白色左:

ftglRenderFont(ftgl_freesans, "HELLO WORLD!", FTGL_RENDER_ALL); 

在下面的例子中,文本不顯示在所有:

float r[4]; 
glGetFloatv(GL_CURRENT_RASTER_POSITION, r); 
glRasterPos4fv(r); 
ftglRenderFont(ftgl_freesans, "HELLO WORLD!", FTGL_RENDER_ALL); 

我很困惑!沒有什麼應該是不同的,那爲什麼字體不能渲染?

回答

1

glRasterPos是當你調用它,它不只是「設置」值矩陣堆棧的當前值轉化。

查詢當前光柵位置的值返回已經轉化的位置。所以,調用glRasterPos(glGet(GL_CURRENT_RASTER_POSITION))具有把當前窗口的空間位置通過變換矩陣再次,這是不是你想要的效果。

如果設置模型視圖和投影矩陣的身份,那麼你的get/set操作應該做你的期望。

從MSDN引述:

對象座標由glRasterPos呈現被視爲就像那些一個glVertex命令。它們由當前的模型視圖和投影矩陣轉換並傳遞到裁剪階段。如果頂點未被剔除,則將其投影並縮放到窗口座標,這將成爲新的當前柵格位置。