调整窗口大小时如何使用鼠标单击获取图像坐标?

阿卜杜勒·瓦哈卜|

我正在包含开始菜单屏幕的openGl中制作游戏。问题是当我单击开始游戏按钮(这是一个纹理图像)时游戏成功启动,但是当我调整窗口大小然后单击开始游戏按钮时,纹理图像坐标发生了变化,而游戏没有开始如何防止在调整窗口大小后更改图像坐标。

这是我的鼠标功能

void mouseClick (int button, int state, int x, int  y)    
{
    if (!menu)
    { 
        xMin = 300, xMax = 400, yMin = 350, yMax = 400;

        if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
        {
            y = height - y;
            if (x >= xMin && x <= xMax && y >= yMin && y <= yMax)
            {
                printf_s("starting 2d Game ");
            }
        }
    }
}

这是我的纹理图像代码

glBegin(GL_QUAD_STRIP);


        glTexCoord2f(0, 0);
        glVertex2f(300, 350);

        glTexCoord2f(1, 0);
        glVertex2f(400, 350);

        glTexCoord2f(0, 1);
        glVertex2f(300, 400);


        glTexCoord2f(1, 1);
        glVertex2f(400,400);

        glEnd();
        glFlush();

这是我的矩阵投影代码:

glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    //gluOrtho2D(0.0, 640.0, 0.0, 440);//dino window
    gluOrtho2D(0.0, 640.0, 0.0, 440);//dino window
    //gluOrtho2D(1.0, 1.0, 1.0,1.0);//house window
    //gluOrtho2D(1.0, 1.0, 1.0, 1.0);//bird window
    glViewport(0, 0, width, height);
    //glViewport(220, 100, 100, 200);
Jadh4v

实际上,正在改变的是鼠标单击坐标。您必须将鼠标单击位置(x,y)从视口坐标转换为图形坐标(即Ortho2D坐标)。

假设每当调整窗口大小时系统都会提供widthheight变量,请尝试以下操作:

x = x/width * 640;
y = (height -y) / height * 440;

然后测试按钮范围。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

画布-在窗口调整大小时转换鼠标坐标

来自分类Dev

调整窗口大小时如何使图像流畅?

来自分类Dev

Javascript鼠标单击图像的坐标

来自分类Dev

在JavaFX中调整窗口大小时如何调整图像大小

来自分类Dev

如何使用鼠标单击并拖动图像来滚动图像

来自分类Dev

如何调整鼠标单击的反跳

来自分类Dev

调整大小时如何防止图像填充整个Tkinter窗口?

来自分类Dev

根据鼠标单击坐标显示图像位置

来自分类Dev

Delphi鼠标单击坐标

来自分类Dev

Delphi鼠标单击坐标

来自分类Dev

在调整窗口大小时,如何防止使用HTML-CSS移动图像?

来自分类Dev

调整窗口大小时图像的位置改变

来自分类Dev

调整窗口大小时固定图像位置

来自分类Dev

使用Angularjs在画布上捕获鼠标单击坐标

来自分类Dev

使用matplotlib存储鼠标单击事件坐标

来自分类Dev

使用 resizeEvent 调整窗口大小时调整 Qlabel 图像大小

来自分类Dev

使用Javascript调整窗口大小时如何更改菜单文本

来自分类Dev

在窗口调整大小时刷新SVG坐标

来自分类Dev

Python:如何使用matplotlib.canvas单击鼠标获取坐标

来自分类Dev

使用最大设备宽度调整大小时如何隐藏图像?

来自分类Dev

调整窗口大小时,图像高度不会调整

来自分类Dev

如何通过使用鼠标滚动或滚动来调整图像大小?

来自分类Dev

调整窗口大小时如何调整ListView控件的大小

来自分类Dev

调整窗口大小时如何调整ListView控件的大小

来自分类Dev

调整窗口大小时如何自动调整 JFreeChart 的大小

来自分类Dev

闪亮+ GGplot-鼠标单击坐标

来自分类Dev

调整窗口大小时修改图像大小(jQuery)

来自分类Dev

如何使用javascript模拟鼠标单击以及鼠标移动

来自分类Dev

如何使用鼠标单击显示鼠标指针位置?

Related 相关文章

  1. 1

    画布-在窗口调整大小时转换鼠标坐标

  2. 2

    调整窗口大小时如何使图像流畅?

  3. 3

    Javascript鼠标单击图像的坐标

  4. 4

    在JavaFX中调整窗口大小时如何调整图像大小

  5. 5

    如何使用鼠标单击并拖动图像来滚动图像

  6. 6

    如何调整鼠标单击的反跳

  7. 7

    调整大小时如何防止图像填充整个Tkinter窗口?

  8. 8

    根据鼠标单击坐标显示图像位置

  9. 9

    Delphi鼠标单击坐标

  10. 10

    Delphi鼠标单击坐标

  11. 11

    在调整窗口大小时,如何防止使用HTML-CSS移动图像?

  12. 12

    调整窗口大小时图像的位置改变

  13. 13

    调整窗口大小时固定图像位置

  14. 14

    使用Angularjs在画布上捕获鼠标单击坐标

  15. 15

    使用matplotlib存储鼠标单击事件坐标

  16. 16

    使用 resizeEvent 调整窗口大小时调整 Qlabel 图像大小

  17. 17

    使用Javascript调整窗口大小时如何更改菜单文本

  18. 18

    在窗口调整大小时刷新SVG坐标

  19. 19

    Python:如何使用matplotlib.canvas单击鼠标获取坐标

  20. 20

    使用最大设备宽度调整大小时如何隐藏图像?

  21. 21

    调整窗口大小时,图像高度不会调整

  22. 22

    如何通过使用鼠标滚动或滚动来调整图像大小?

  23. 23

    调整窗口大小时如何调整ListView控件的大小

  24. 24

    调整窗口大小时如何调整ListView控件的大小

  25. 25

    调整窗口大小时如何自动调整 JFreeChart 的大小

  26. 26

    闪亮+ GGplot-鼠标单击坐标

  27. 27

    调整窗口大小时修改图像大小(jQuery)

  28. 28

    如何使用javascript模拟鼠标单击以及鼠标移动

  29. 29

    如何使用鼠标单击显示鼠标指针位置?

热门标签

归档