我将我的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相关的内容!
任何人都知道这个问题来自哪里?
答案 0 :(得分:0)
这很可能是由于错误使用MFC引起的。如果您没有在代码中的任何位置使用#ifdef _DEBUG或ASSERT(),它仍然可以在MFC定义的某些宏中使用。 MFC在调用某些WinAPI函数的宏上非常繁重,而这些宏可能很好地包含了一些#ifdefs本身。
但无论如何,MFC和OpenGL应该很容易混合。只需发布您的OpenGL初始化代码,看看我们是否可以解决它。