放大鼠标的算法(OpenGL)
我有一个左上角坐标系的OpenGL场景。 当我glScale时,它从左上角的(0,0)放大。 我希望它从鼠标的坐标(相对于OGL框架)放大。 这是怎么做到的? 谢谢
我相信这可以分四步完成:
- 使用窗口系统(即GLUT或SDL)具有的任何function找到鼠标的x和y坐标,并使用gluUnProject获取与这些窗口坐标对应的对象坐标
- 翻译(x,y,0)以将原点放在那些坐标处
- 按您想要的矢量(i,j,k)缩放
- 翻译(-x,-y,0)将原点放回左上角
我使用glortho进行了平滑的放大。 我的解决方案的骨架是
glortho(初始视口x,y和大小)
glcalllist(我的显示列表)
给予
。
。
循环逐渐转到最终的viewrport坐标/大小。 实现您的时间和FPS要求
。
。
glortho(最终视口x,y和大小)
glcalllist(我的显示列表)
给予
我希望你能得到一般的想法。 很少有其他方法可以实现这一点,但我发现最容易理解的方法是glortho。