OpenGL - 如何从中心缩放对象?

时间:2012-04-22 13:13:20

标签: c opengl glut

我的.c程序使用过滤创建一个对象并将纹理映射到该对象上。然后,用户可以操纵该对象。当对象按比例放大然后按比例缩小时,它会移动到窗口之外并且不在视野范围内。如何在缩放时将对象保持在中心位置,或者在窗口外移动替代方法?如果需要,我可以包含我的代码。

我想如果我总是从物体的中心缩放,这会有所帮助,但不知道如何做到这一点,因为它似乎总是从角落缩放,导致它移出屏幕

好的,所以图像似乎最初从中心开始缩放,但是当图像被翻译后,任何缩放都会导致它移动?

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

听起来好像缩放操作没有从对象中心位置缩放对象,这会导致对象远离其原点。

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

答案 2 :(得分:0)

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

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

请注意,对象居中的方法不止一种。最简单的是找到边界框的中心。