【发布时间】:2013-09-25 07:59:04
【问题描述】:
我是使用openGL的新手,现在我正在尝试旋转我制作的正方形,但是当我旋转它时,正方形不仅会旋转,还会在旋转时四处移动。我想我在旋转和平移过程中犯了一个错误,但找不到解决方案
void drawSquare(double x,double y, int num)
{
double xLength = 0.6;
double yLength = 0.6;
for(int i=0;i<num;i++)
{
glLoadIdentity();
glPushMatrix();
glTranslatef(0, 0, 0.0f);
glRotatef(angleCW, 0.0f, 0.0f,1.0f);
glBegin( GL_QUADS );
if(i%2==0)
{
glColor3f(gCurrentRed,gCurrentGreen,gCurrentBlue);
}
else
{
glColor3f(0.0f,0.0f,0.0f);
}
glVertex3f(x,y,0);
glVertex3f(x+xLength,y,0);
glVertex3f(x+xLength,y+yLength,0);
glVertex3f(x,y+yLength,0);
xLength -=0.1;
yLength -=0.1;
x += 0.05;
y += 0.05;
glEnd();
glPopMatrix();
}
}
【问题讨论】:
-
你需要先旋转然后平移,因为当你旋转某些东西时,它总是围绕
(0, 0, 0) -
我尝试先旋转它,但结果相同
-
@ThanushanBalakrishnan:OpenGL 不是场景图。 glTranslate 和 glRotate 只是改变绘制时顶点相乘的矩阵的值。绘制图元后,对矩阵的任何更改都不会产生进一步的影响。
-
@ThanushanBalakrishnan:如果您(诚然)不知道所讨论的主题实际上是如何工作的,请不要提供建议。