2016-03-01 243 views
0

我使用SDL 1.2在C++中制作了一个简单的游戏,我使用wtypes.h中的函数来获得显示分辨率,然后将游戏分辨率设置为它的值。问题是,当我编译它时,exe文件(我的游戏的分辨率)取决于它编译的计算机的分辨率。所以当我将exe文件复制到另一台电脑并运行时,游戏分辨率将与我的电脑分辨率相同,而不是计算机的分辨率(除非它们具有相同的分辨率)。有没有办法在运行时获得显示分辨率?我知道我可以简单地编译我的cpp文件在那台计算机,但需要C:B/VS,dll文件和链接dll文件:/C++的屏幕分辨率

+0

尝试在设置游戏分辨率之前获取[当前显示模式](https://wiki.libsdl.org/SDL_GetCurrentDisplayMode)。 – Nacho

+0

你是如何获得显示器分辨率的?我敢打赌,你已经*在运行时得到它,除非你对它进行了硬编码。 – immibis

回答

3

SDL_GetVideoInfo函数返回一个只读指针指向包含视频硬件。如果在SDL_SetVideoMode之前调用,则返回结构的成员current_wcurrent_h将包含最佳视频模式的像素格式。

#include "SDL.h" 

SDL_Init(SDL_INIT_VIDEO); 
const SDL_VideoInfo* videoInfo = SDL_GetVideoInfo(); 
width = videoInfo->current_w; 
height = videoInfo->current_h;