|
|
方法如下
------------------------------------------------------------------
①先记录屏幕的宽高比
int wid=GetSystemMetrics(SM_CXSCREEN);
int hei=GetSystemMetrics(SM_CYSCREEN);
float ration=(float)wid/hei;
------------------------------------------------------------------
②屏幕分辨率设置成 640*480
DEVMODE dmScreenSettings;//设备模式
memset(&dmScreenSettings,0,sizeof(dmScreenSettings));//清除内存
dmScreenSettings.dmSize=sizeof(dmScreenSettings);//大小
dmScreenSettings.dmPelsWidth = 640;//屏幕宽度
dmScreenSettings.dmPelsHeight = 480;//屏幕高度
dmScreenSettings.dmBitsPerPel = 32;//色彩位数
dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN);
------------------------------------------------------------------
③创建 640*480 的窗口
hwnd=CreateWindow("tank","tank",WS_POPUP,0,0,640,480,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
------------------------------------------------------------------
④设置 OpenGL 里的投影,设置视口
glMatrixMode(GL_PROJECTION);//设定投影
glLoadIdentity();//复位
gluPerspective(45.0f,ration,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW);//设定视口
glViewport(0,0,640,480);
glLoadIdentity();
------------------------------------------------------------------
哈哈! 640*480 的游戏, 在 16:10 的宽屏显示器上也不变形!
总地来说就是: 游戏窗口是 640*480, 但投影宽高比是 显示器的高宽比.
[em9] |
|