2010-04-04 63 views
0

我使用Win32和OpenGL將文本繪製到窗口上。我正在使用位圖字體方法,與wglUseFontBitmaps。這是我的主要渲染功能:「測試」繪製多邊形後OpenGL位圖文本失敗

glClear(GL_COLOR_BUFFER_BIT); 

glPushMatrix(); 
    glColor3f(1.0f, 0.0f, 1.0f); 
    glBegin(GL_QUADS); 
     glVertex2f(0.0f, 0.0f); 
     glVertex2f(128.0f, 0.0f); 
     glVertex2f(128.0f, 128.0f); 
     glVertex2f(0.0f, 128.0f); 
    glEnd(); 
glPopMatrix(); 

glPushMatrix(); 
    glColor3f(1.0f, 1.0f, 1.0f); 
    glRasterPos2i(200, 200); 
    glListBase(fontList); 
    glCallLists(5, GL_UNSIGNED_BYTE, "Test."); 
glPopMatrix(); 

SwapBuffers(hDC); 

正如你可以看到它是非常簡單的,它應該做的唯一事情就是畫一個四邊形,並繪製文本。但問題是繪製一個多邊形似乎弄亂了我嘗試去做的任何文本操作。如果我在多邊形之前放置文本繪圖函數,文本和多邊形都會很好地繪製。有什麼我在這裏失蹤?

編輯:這個問題只發生在全屏運行窗口,ChangeDisplaySettings。任何理由爲什麼這將是?

+0

你是什麼意思的「搞砸」?不顯示,亂碼,什麼? – genpfault 2010-04-05 01:11:02

+0

文本根本不顯示。 – kaykun 2010-04-05 19:55:27

回答

1

我知道這可能是一個非常晚的答覆,但我遇到了這個問題尋找這個確切問題的答案。我試圖在多邊形上繪製文本的方式稍有不同。我有一個看起來像這樣的方法:

glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); 
glLoadIdentity(); 
glRasterPos2f(pX, pY); 

glPushAttrib(GL_LIST_BIT); 
glListBase(base - 32); 
glCallLists(length(pText), GL_UNSIGNED_BYTE, PChar(pText)); 
glPopAttrib(); 

我試圖繪製多邊形和文字上這樣說:

glPushMatrix(); 
glBegin(GL_QUADS); 
    glColor(1.0, 0.0, 0.0); 
    glVertex2f(fX, fY); 
    glVertex2f(fX + fWidth, fY); 
    glVertex2f(fX + fWidth, fY + fHeight); 
    glVertex2f(fX, fY + fHeight); 
glEnd(); 
glColor(0.0, 1.0, 0.0); 
Text(100, 100, fCaption); 
glPopMatrix(); 

但是,類似於您的問題,只有文本提請或在某些案例(在將Text方法移動一點之後)什麼都不會繪製。我意識到,該方法有

glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); 

這顯然清除緩衝區後,我畫多邊形之前我提請文字...這是這樣一個愚蠢的錯誤,雖然我沒有認識到在任何類似的代碼你提供的代碼,它可能在別的地方。無論哪種方式,如果你只是從Text方法中清除glClear方法,這一點代碼將幫助你。希望這有助於或可能幫助處於類似情況的其他人。