OpenGl:关于端点的旋转线

时间:2014-08-13 14:40:45

标签: c++ opengl

我是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之类的函数,为什么要明确指定矩阵?

从一些基本点,线然后多边形等

获得一些解释所有内容的资源真的很有帮助。

1 个答案:

答案 0 :(得分:4)

标准免责声明:请勿使用glBegine / 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();