【问题标题】:Can I reuse transformations related code with GLSL?我可以使用 GLSL 重用与转换相关的代码吗?
【发布时间】: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 中重写这样的调用。我可以重复使用它吗?

标签: opengl glsl


【解决方案1】:

据我所知,gluLookAt 适用于内置矩阵类型。对于 opengl 上的较新版本,您将需要重新编写它或使用第三方库。如果您使用的是 c++,我相信 glm 库已经内置了它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 2011-10-21
    • 2023-03-31
    • 1970-01-01
    • 2020-02-24
    • 2012-11-11
    相关资源
    最近更新 更多