2011-02-02 45 views
1

我將Qt中的Opengl項目移植到MFC中,但只有在調試模式下。OpenGL繪圖在發佈模式下不可見(當定義_DEBUG時)

在調試模式下,一切正常。

只要_DEBUG被定義,它甚至可以在發佈模式下工作。如果不是,每個OpenGL函數都會被調用,但屏幕上沒有結果。

我在代碼的任何地方都沒有使用斷言函數。 我使用Glew來獲取OpenGL函數指針。

這裏是(慢)的OpenGL函數,即使我不認爲這將真正幫助:

void COpenGLView::Render() 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
    glBegin(GL_QUADS); 
    for(u32 i = 0; i < 144; ++i) 
    { 
     for(u32 j = 0; j < 160; ++j) 
     { 
      switch(lcd_[(i * 160)+j] & 0x3) 
      { 
      case WHITE:  glColor3f(0.75f,1.0f,0.75f); break; 
      case LIGHT_GREY: glColor3f(0.50f, 0.80f, 0.50f); break; 
      case DARK_GREY: glColor3f(0.25f,0.60f,0.25f); break; 
      case BLACK:  glColor3f(0.0f,0.0f,0.0f); break; 
      } 
      glVertex2d(j,i); 
      glVertex2d(j,i + 1); 
      glVertex2d(j + 1,i + 1); 
      glVertex2d(j + 1,i); 
    } 
    } 
    glEnd(); 

    FinishRender(); 
} 

所以,主要的問題是:沒有什麼OpenGL相關的屏幕上,如果_DEBUG是沒有定義的!

任何人都知道這個問題從哪裏來?

+1

發佈一個最小,完整的程序來演示問題。 – genpfault 2011-02-02 04:02:03

回答

0

這很可能是由MFC的錯誤使用引起的。如果你沒有在你的代碼中的任何地方使用#ifdef _DEBUG或ASSERT(),它仍然可能用於MFC定義的一些宏。在調用一些WinAPI函數的宏上,MFC非常繁重,而且這些宏本身可能包含一些#ifdefs。但是無論如何,MFC和OpenGL應該很容易混合。只需發佈你的OpenGL初始化代碼,看看我們是否可以解決它。

相關問題