2012-04-22 97 views
0

使用glut的我的.c程序创建一个对象并将纹理映射到该对象上。这个对象可以被用户操纵。当对象被放大并缩小时,它会移出窗口并离开视野。我如何确保对象在缩放或可选不能移动到窗口外时保持中心位置?如果需要,我可以包含我的代码。OpenGL - 如何从中心缩放对象?

林想,如果我总是从对象的中心规模,这将帮助,但不知道如何做到这一点,因为它似乎总是从,这是造成其移出屏幕

好了,所以四角规模图像似乎从最初的中心开始缩放,但是当图像被翻译完毕后,任何缩放会导致图像移动?

回答

0

这听起来好像缩放操作不是从对象中心位置缩放对象,然后这会导致对象从其原点移开。

确保您在之前执行任何翻译的缩放操作

+0

不,它似乎是从角落缩放。这是否有明显的原因? – 2012-04-22 13:27:35

+0

它可能只是因为过剩的顶点都是正的。你可以解决这个问题,我发现对象的宽度,高度和深度,使用glTranslate将这些值减一半,然后再缩放然后再翻译。有点faf但应该做的伎俩。 – rflood89 2012-04-22 21:07:23

0

为此,需要在对象和窗口边缘之间创建碰撞检测算法。如果屏幕上物体的边缘或像素碰到窗口的边缘,则不应再进一步。

网上有很多关于此的材料,我相信你可以找到一些例子。

0

一个对象是一组点。例如,如果它们的所有坐标都是正数,则缩放似乎是从一个角落完成的。为了防止这种情况,你需要做一些翻译工作。

glScaled(...); 
glTranslated(/*-1 * center coordinates relative to the object*/); 
//draw the object 

请注意,有多种方法来居中对象。最简单的是找到边界框的中心。