将我的应用程序缩小到窗口大小后,鼠标坐标不会发生变化。图形工作正常,只是鼠标坐标有问题。
我的应用程序原生大小为1920x1080。但我不想将应用缩小到1280x720。
以下是我现在正在做的事情:
使用1280x720 w / h创建窗口
appWindow = SDL_CreateWindow(GAME_TITLE, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 1280, 720, SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS | SDL_WINDOWPOS_CENTERED);
我设置glViewport以匹配窗口
glViewport(0,0,1280,720);
我使用原生大小1920x1080
制作了设置glOrtho glOrtho(0, 1920, 1080, 0, -1, 1);
就像我已经说过的那样,通过这样做,图形会缩放新的窗口大小,但鼠标坐标不会改变,我需要知道如何更改它们。
答案 0 :(得分:0)
我不确定我理解你的问题,但我认为这是问题:glOrtho()是opengl命令而不是sdl,所以它只影响opengl图形。在您的情况下,鼠标和窗口由SDL控制。
我不明白你要做的是说"我的应用程序本机大小是1920x1080。但我不想将应用缩小到1280x720。"如果要调整窗口大小,请使用SDL_SetWindowSize。然后用glViewport和glOrtho调整opengl视口和投影,这样你的opengl视图和sdl窗口大小是同步的。
编辑1:如果您想现在渲染,通过使用比Windows更大的视图,那么您需要自己计算鼠标位置。 sdl为您提供相对于窗口大小的鼠标而不是opengl视图和投影。如果你只是缩放视图,数学应该非常简单。
在您的情况下,编辑2: glOrtho(0,1920,1080,0,-1,1)将1920x1080图像投影到glViewport(0,0,1280,720)视图。如果我没有弄错的话,它会缩小。因此,您需要将鼠标位置缩小到相对于比例:
未经测试的代码:
mouseX= 1920.0/1280.0 * winMouse.x
mouseY= 1080.0/720.0 * winMouse.y;
我试用了很多,所以试着去了解一下opengl的作用和实验。