在发布模式下OpenGL绘图不可见(定义_DEBUG时)

时间:2011-02-02 01:08:58

标签: debugging opengl rendering release

我将我的Opengl项目从Qt移植到MFC成功..仅在调试模式下。

在调试模式下,一切都很好。

只要定义了_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();
}

所以主要的问题是:如果没有定义_DEBUG,屏幕上没有任何与OpenGL相关的内容!

任何人都知道这个问题来自哪里?

1 个答案:

答案 0 :(得分:0)

这很可能是由于错误使用MFC引起的。如果您没有在代码中的任何位置使用#ifdef _DEBUG或ASSERT(),它仍然可以在MFC定义的某些宏中使用。 MFC在调用某些WinAPI函数的宏上非常繁重,而这些宏可能很好地包含了一些#ifdefs本身。

但无论如何,MFC和OpenGL应该很容易混合。只需发布您的OpenGL初始化代码,看看我们是否可以解决它。