关于nehe的opengl的一个简单的问题
刚刚才开始看nehe的opengl的书籍,第二章里面介绍了一个画三角的小程序
按F1可以在全屏和窗口之间切换,但是为什么在窗口显示的时候会发生闪烁的显现呢?
请哪位达人指点下,代码如下:
LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_ACTIVATE:
{
if (!HIWORD(wParam))
{
active=TRUE;
}
else
{
active=FALSE;
}
return 0;
}
case WM_SYSCOMMAND:
{
switch(wParam)
{
case SC_SCREENSAVE:
case SC_MONITORPOWER:
return 0;
}
break;
}
case WM_CLOSE:
{
PostQuitMessage(0);
return 0;
}
case WM_KEYUP:
{
keyboard[wParam]=FALSE;
return 0;
}
case WM_KEYDOWN:
{
keyboard[wParam]=TRUE;
return 0;
}
case WM_SIZE:
{
ResizeWindow(LOWORD(lParam),HIWORD(lParam));
return 0;
}
case WM_CREATE:
{
DefWindowProc(hWnd,uMsg,wParam,lParam);
return 0;
}
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
MSG msg;
BOOL done=FALSE;
if (MessageBox(NULL,"Would you like to run the progrmme in Fullscreen mode?","Start fullscreen?",MB_YESNO|MB_ICONINFORMATION)==IDNO)
{
fullscreen=FALSE;
}
if (!CreateGLWindow("OpenGL Framework",640,480,16,fullscreen))
{
return 0;
}
while (!done)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message==WM_QUIT)
{
done=TRUE;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
else
{
if (active)
{
if (keyboard[VK_ESCAPE])
{
done=TRUE;
}
else
{
DrawGLScene();
SwapBuffers(hDC);
}
}
if (keyboard[VK_F1])
{
keyboard[VK_F1]=FALSE;
KillWindow();
fullscreen=!fullscreen;
if (!CreateGLWindow("OpenGL FrameWork",640,480,16,fullscreen))
{
return 0;
}
}
}
}
KillWindow();
return(msg.wParam);
}