SDL2虚拟像素大小

时间:2018-01-19 19:16:11

标签: resolution sdl-2

如果我让SDL创建默认尺寸的窗口,我得到1024×768,一切看起来都正常。如果我用1024×768的尺寸明确创建它,一切看起来都很正常。但是,如果我明确创建尺寸为512×384,而不是获得一个像素较少的窗口,我会得到一个窗口,其中每个像素都缩小,但窗口的逻辑大小仍然是1024×768。这种逻辑大小是否以某种方式硬连线到SDL2中?

但不!我想要更少的像素,而不是更小的像素。我希望我的像素仍然是它们在屏幕上的大小。如果我从(0,0)到(511,383)画一条线想要走到我窗口的完整对角线范围。我需要与SDL_CreateWindow一起使用什么其他功能来实现此结果?

1024×768 1024x768

512x384, code assuming that 512x384 is logical window size

512x384,代码假设512x384是逻辑窗口大小

1 个答案:

答案 0 :(得分:0)

谢谢Nelxiost,让我找到了自己的答案。这是关键代码,省略了错误处理代码:

gWindow = SDL_CreateWindow(title, 1024, 768, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, 0);
gRenderer = SDL_CreateRenderer(gWindow, -1, SDL_RENDERER_ACCELERATED | 
    SDL_RENDERER_TARGETTEXTURE);
target = SDL_CreateTexture(gRenderer, SDL_PIXELFORMAT_RGBA8888, 
    SDL_TEXTUREACCESS_TARGET, SCREEN_WIDTH, SCREEN_HEIGHT);

以下是代码的最后一行:

target = SDL_CreateTexture(gRenderer, SDL_PIXELFORMAT_RGBA8888,
    SDL_TEXTUREACCESS_TARGET, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);

总结:如果您希望一个逻辑像素等于一个物理像素,请创建与窗口尺寸相同的目标纹理。

另一方面,如果您希望窗口的逻辑尺寸不受窗口大小的影响,请在所有情况下使用这些尺寸创建目标纹理。