DirectX的问题:消息循环前在主表面上绘制图像后,消息循环开始后图像显示不出来,为什么? 30
我在运行《WINDOWS游戏编程大师技巧(第二版)》第七章中的一些示例程序时,屏幕上的图像闪一下就没了。WinMain的结构大致如下:intWINAPIWinMain(....
我在运行《WINDOWS游戏编程大师技巧(第二版)》第七章中的一些示例程序时,屏幕上的图像闪一下就没了。
WinMain的结构大致如下:
int WINAPI WinMain(...)
{
//注册窗口类
//创建窗口
Game_Init();
while(TRUE)
{
if(PeekMessage(...))
{
if(msg.message==WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Game_Main();
}
Game_Shutdown();
...
}
我发现在Game_Init()中往主表面上绘制图像后,程序运行到while处图像就没了(通过单步跟踪发现的),以后屏幕上一直是黑黑的,什么都没有,在Game_Main()中往后备表面上绘制图像,然后Flip到主表面上,程序就能达到预期的效果,请问这是怎么回事?
《WINDOWS游戏编程大师技巧》的作者应该不会在好几个示例程序中都犯相同的错误吧,所以我觉得肯定应该能在Game_Init()中绘制主表面的,只是因为其他什么原因才导致上述问题吧?
BTW,我运行任一个示例程序时,屏幕显示出第一帧后都会闪烁3下,然后才是稳定的画面,这是怎么回事?
有时候一个程序运行时,我按了ESC后(示例代码中所有程序都在Game_Main()中先进行这个判断:如果按下了ESC,就退出程序),有时候屏幕上的图像没有了,成了黑屏,但一直回不到windows桌面,不管按ALT+TAB还是调出任务管理器来都是什么都看不见,只好关机重启,请问这是怎么回事? 展开
WinMain的结构大致如下:
int WINAPI WinMain(...)
{
//注册窗口类
//创建窗口
Game_Init();
while(TRUE)
{
if(PeekMessage(...))
{
if(msg.message==WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Game_Main();
}
Game_Shutdown();
...
}
我发现在Game_Init()中往主表面上绘制图像后,程序运行到while处图像就没了(通过单步跟踪发现的),以后屏幕上一直是黑黑的,什么都没有,在Game_Main()中往后备表面上绘制图像,然后Flip到主表面上,程序就能达到预期的效果,请问这是怎么回事?
《WINDOWS游戏编程大师技巧》的作者应该不会在好几个示例程序中都犯相同的错误吧,所以我觉得肯定应该能在Game_Init()中绘制主表面的,只是因为其他什么原因才导致上述问题吧?
BTW,我运行任一个示例程序时,屏幕显示出第一帧后都会闪烁3下,然后才是稳定的画面,这是怎么回事?
有时候一个程序运行时,我按了ESC后(示例代码中所有程序都在Game_Main()中先进行这个判断:如果按下了ESC,就退出程序),有时候屏幕上的图像没有了,成了黑屏,但一直回不到windows桌面,不管按ALT+TAB还是调出任务管理器来都是什么都看不见,只好关机重启,请问这是怎么回事? 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询