我认为这可以分为四个步骤: 使用你的窗口系统(例如GLUT或SDL)提供的功能找到鼠标的x和y坐标,并使用gluUnProject获取与这些窗口坐标对应的对象坐标。 通过平移(x,y,0)将原点放置在这些坐标上。 按照你所需的向量(i,j,k)进行缩放。 通过平移(-x,-y,0)将原点放回左上角。
我使用glortho实现了平滑的缩放效果。我的解决方案的框架如下:glortho(初始视口x,y和大小) glcalllist(我的显示列表) 渲染 。 。 循环逐渐到达最终视口坐标/大小。实现您的时间和FPS要求。 。 。 glortho(最终视口x,y和大小) glcalllist(我的显示列表) 渲染希望您能理解这个基本思路。还有其他方法可以实现此目的,但我认为glortho是最容易理解的方法。