我最近尝试用 SDL2 为 Windows 10 编写一个 C 程序。我只使用一个源文件和 SDL2 dll。问题在于,如果我在编译前更改源文件的名称(或编译后的可执行文件的名称)而不是 2000*1400 像素的窗口,则会创建另一个巨大的窗口(见照片)。 和 (每个像素都被拉伸,窗口进入全屏)
我使用 MinGW 作为编译器,语法如下:
gcc -B “包含路径” “sourceName.c” -o “sourceName.exe” -lmingw32 -lSDL2main -lSDL2
这是来源:
#include <SDL2\SDL.h>
#include <stdbool.h>
#include <stdio.h>
SDL_Renderer* rend;
int main(int argc, char *argv[])
{
if (SDL_Init(SDL_INIT_EVERYTHING) != 0)
{
printf("Error initializing SDL: %s\n", SDL_GetError());
return 0;
}
/* Create a window */
SDL_Window* wind = SDL_CreateWindow("tst",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
2000, 1400, 0);
if (!wind)
{
printf("Error creating window: %s\n", SDL_GetError());
SDL_Quit();
return 0;
}
/* Create a renderer */
Uint32 render_flags = SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC;
rend = SDL_CreateRenderer(wind, -1, render_flags);
if (!rend)
{
printf("Error creating renderer: %s\n", SDL_GetError());
SDL_DestroyWindow(wind);
SDL_Quit();
return 0;
}
bool running = true;
SDL_Event event;
while (running)
{
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_QUIT:
running = false;
}
}
SDL_RenderPresent(rend);
}
}
总结一下:如果我更改可执行文件或源文件的名称(因此,如果我正在处理另一个文件),我的窗口将完全拉伸。
请注意,较小的尺寸(例如 200*140 像素)不会发生这种情况。
我尝试在一个完全不同的文件夹中工作,重新安装 SDL 和编译器,但似乎没有任何效果。
我不知道问题出在哪里,有人可以给我一些建议吗?
谢谢你的时间。