OpenGl:围绕端点旋转线

OpenGl : Rotate line about endpoint

本文关键字:旋转 端点 OpenGl      更新时间:2023-10-16

我是OpenGL的新手,正在尝试一些实验代码。我使用的是Open GL 4+。我可以这样画一条线:

    glBegin(GL_LINES);
    glVertex3f(0.0,0.0,0.0);
    glVertex3f(1.0,1.0,0.0);
    glEnd();

现在我想围绕它的一个端点旋转这条线,就像时钟的指针一样。我该怎么做呢?我在网上搜索过,但没有任何东西能证明简单的直线旋转。我尝试使用glRotatef,但我认为我错过了一些关键的东西,因为glRotatef对绘制的线没有影响。所有的教程似乎都是从三角形开始的(不是点和线)

做这些事情的OpenGL工作流是什么?我不断遇到使用矩阵的示例代码,但我不完全得到目的。我的意思是,我是否必须明确地跟踪我的最新矩阵,或者被OpenGL抽象并在内部处理?

我理解数学和变换矩阵的作用,但我对矩阵在编写OpenGL代码中的作用感到困惑。如果有像glRotatef这样的函数,为什么要明确地指定矩阵?

如果有一些资源可以从最基本的点、线然后多边形等方面解释一切,那就太有帮助了

标准免责声明:不要使用glbegin/glEnd系列函数,而是迁移到基于着色器的设置。

但这里是旋转的方式(省略参数)

glPushMatrix();
glTranslate();//tranlate by -p where p is the point you want to rotate about
glRotate();//rotate by some degrees
glTranslate();//tranlate back by p
glBegin(GL_LINES);
glVertex3f(0.0,0.0,0.0);
glVertex3f(1.0,1.0,0.0);
glEnd();
glPopMatrix();