Рисунок OpenGL невидим в режиме релиза (когда определено _DEBUG) - PullRequest
1 голос
/ 02 февраля 2011

Я успешно перенес свой проект Opengl из Qt в MFC ... только в режиме отладки.

Все отлично работает в режиме отладки.

Он работает даже в режиме выпуска, пока_DEBUG определен.Если это не так, вызывается каждая функция OpenGL, но без результата на экране.

Я не использую ни одной функции assert в коде.Я использую 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 Ответ

0 голосов
/ 13 февраля 2012

Скорее всего, это вызвано неправильным использованием MFC.Если вы нигде не используете #ifdef _DEBUG или ASSERT () в вашем коде, все еще возможно, что он используется в некоторых макросах, определенных MFC.MFC довольно тяжело работает с макросами, которые просто вызывают некоторую функцию WinAPI, и эти макросы вполне могут содержать некоторые #ifdefs.

Но независимо от этого, MFC и OpenGL должны быть очень просты в смешивании.Просто опубликуйте свой код инициализации OpenGL, чтобы узнать, сможем ли мы его решить.

...