1
我有一個簡單的OpenGL應用程序,它顯示一條線。我將x1, y1, x2
和y2
存儲在全局變量中。2D中的OpenGL旋轉
旋轉函數使用feedback
功能,討論了here和翻譯來源方法,建議here。它的目的是圍繞它的中心旋轉一條線。
下面的代碼:
void rotate(float theta)
{
GLfloat* buff = new GLfloat[5];
glFeedbackBuffer(5, GL_2D, buff);
glRenderMode(GL_FEEDBACK);
int center_x = x1 + (x2 - x1)/2;
int center_y = y1 + (y2 - y1)/2;
glPushMatrix();
glTranslatef(-center_x, -center_y, 0);
glRotatef(theta, 0, 0, 1);
glTranslatef(center_x, center_y, 0);
line();
glPopMatrix();
x1 = (int)buff[1];
y1 = (int)buff[2];
x2 = (int)buff[3];
y2 = (int)buff[4];
delete[] buff;
glutPostRedisplay();
}
然而,兩種譯法似乎收效甚微 - 線條仍然圍繞窗口的左下角旋轉。此外,如果線條不適合可見表面,線條會被裁剪(這不會在翻譯註釋掉時發生 - 如果線條落在可見表面之外,線條會拒絕移動)。
爲什麼不能使用此代碼?如何在2D中圍繞它的中心(或任意點)旋轉一條線?
確實,現在它的工作,謝謝!然而,當它旋轉時,線條緩慢地移向窗口的左下角;這可以避免嗎? – 2010-12-06 18:58:20