Opengl 使用glTranslate和glRotate移动和旋转?

Opengl 使用glTranslate和glRotate移动和旋转?,opengl,Opengl,我正在编写一个应用程序,它绘制一个二维三角形,并根据其位置绕z轴旋转。当鼠标拖动三角形时,三角形的中间部分(t1.tx,t1.ty)不断变化。问题是,当我将三角形拖动到另一个位置时,它不是停留在其所在位置并旋转,而是围绕其中心点以圆形路径旋转 我做错了什么?我想让它在它的位置上旋转 void drawTriangle() { glBegin(GL_POLYGON); glColor3f((float)200/255, (float)200/255, (float)200/255

我正在编写一个应用程序,它绘制一个二维三角形,并根据其位置绕z轴旋转。当鼠标拖动三角形时,三角形的中间部分(t1.tx,t1.ty)不断变化。问题是,当我将三角形拖动到另一个位置时,它不是停留在其所在位置并旋转,而是围绕其中心点以圆形路径旋转

我做错了什么?我想让它在它的位置上旋转

void drawTriangle() {
    glBegin(GL_POLYGON);

    glColor3f((float)200/255, (float)200/255, (float)200/255);
    glVertex2f(t1.tx, t1.ty + .2); // top point of triangle
    glVertex2f(t1.tx - .2, t1.ty - .2); // left point
    glVertex2f(t1.tx + .2, t1.ty - .2); // right point

    glEnd();
}

void display() {
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity();

    glPushMatrix();
        glTranslatef(t1.tx, t1.ty, 0); // move matrix to triangle's current center point
        glRotatef(theta, 0, 0, 1.0); // rotate on z-axis
        drawTriangle();
    glPopMatrix();

    glutPostRedisplay();
    glutSwapBuffers();
}

我做这件事已经有一段时间了,但是根据你说的,我的第一个猜测是交换glTranslatef和glRotatef的顺序。您希望在模型空间中旋转,然后转换到世界空间。

我修复了它。问题是我在翻译矩阵,然后在翻译后的矩阵上画图。我所做的是在矩阵的中心绘制三角形,所以当矩阵平移时,它仍然在当前位置移动和旋转。感谢您的帮助。

将其标记为“不要让此问题显示为未回答”的答案。