使用 SCREEN_WIDTH = 1200 和 SCREEN_HEIGHT = 800。
首先,我在 (x = 0, y = 0, w = 40, h = 40) 处绘制一个框到屏幕上;
然后我使用 handleMouse 函数返回单击鼠标的位置的 x 和 y 坐标。
问题是,当程序以非最大化窗口模式启动时,当我点击(看起来是什么)框的右下角时,返回的坐标是 x = 40, y = 32。当我认为它应该返回 x = 40,y = 40。
我不知道问题是否是绘制不正确,或者函数返回了错误的 x/y。
我相信我了解 openGL 渲染、转换和 glOrth 的工作原理,但我可能完全错了。我在网上看到一些建议说 Windows 装饰(使用 Windows 7)会导致这个问题,但很少解释,也没有提供解决方案。
这是我的全部源代码。我已经剥离了从游戏到基础的所有内容,但问题仍然存在:(。我添加了两张图片,以便人们可以看到我的问题。在非最大化窗口(顶部图片)中,单击右下角时, 返回的坐标为 41,32; y 坐标小于应有的值。并且在 MAXIMIZED WINDOW(底部图片)中,单击同一个角时,返回正确的坐标 40, 40。这些结果发生在两者上我的原始源代码和 genpfault 的建议代码。
//原来我不能发布图片:(,而是链接。
main.cpp
int main( int argc, char* args[] )
{
//Initialize FreeGLUT
glutInit( …Run Code Online (Sandbox Code Playgroud)