【发布时间】:2013-04-13 19:30:14
【问题描述】:
我有一个不涉及 GLSL 的旧 OpenGL 项目,现在 我重写它以便它使用 GLSL。我有一个旋转的功能 当您移动鼠标时,相机围绕一个固定点。我不知道 如何在我的新项目中使用这个功能,现在我使用 GLSL 和 不是标准的 OpenGL 固定管道。
这是函数,我不确定我是否可以使用相同的代码 还是我必须重写转换以使其适用于 GLSL?
void mouseMovePassive(int x, int y)
{
static int oldX=x, oldY=y;
rotateCamera(y-oldY, x-oldX);
int centerX = glutGet( GLUT_WINDOW_WIDTH )/2;
int centerY = glutGet( GLUT_WINDOW_HEIGHT )/2;
if( abs(centerX-x) > 250 || abs(centerY-y) > 250 )
{
glutWarpPointer(centerX, centerY);
oldX = centerX;
oldY = centerY;
}
else
{
oldX = x;
oldY = y;
}
}
【问题讨论】:
-
有趣的函数是
rotateCamera,而不是您的输入事件处理程序。请发布那个的源代码。由于缺乏信息,目前我们无法为您提供帮助。 -
这里没有足够的信息来回答这个问题。我们只能猜测这些函数的实际作用。
-
大家好。代码有点深,太麻烦你了,但最后它归结为对 gluLookAt 的调用。所以我想我现在真正的问题是,我该如何处理那个 gluLookAt 调用,如何在 GLSL 中重写这样的调用。我可以重复使用它吗?