OpenGL(ES) - 旋转圆圈只能渲染圆圈的一半

时间:2011-05-07 01:14:05

标签: graphics opengl-es

我已成功绘制圆圈并对其应用翻译和缩放。当我将圆圈旋转仅1度(或任何角度)时,绘制半圆。我正在使用正视角度。这是为什么?


translateX = (float) (ratio * (xCoor - windowWidth / 2)) / (windowWidth / 2);
translateY = (float) (-(yCoor - windowHeight / 2)) / (windowHeight / 2);

gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, vertexPointerCircleHR);
gl11.glBindBuffer(GL11.GL_ELEMENT_ARRAY_BUFFER, indexPointerCircleHR);
gl11.glVertexPointer(3, GL10.GL_FLOAT, 0, 0);

circleRotation++;

gl11.glPushMatrix();
gl11.glColor4f(...);
gl11.glScalef(...);

gl11.glTranslatef(translateX, translateY, 0);
gl11.glRotatef(1,translateX,translateY, 0); //or circleRotation

gl11.glDrawElements(GL11.GL_TRIANGLE_FAN, verticesCircle, 
  GL11.GL_UNSIGNED_SHORT, 0);
gl11.glPopMatrix();

感谢阅读。

1 个答案:

答案 0 :(得分:3)

glRotate接收角度和一个3d矢量,它将是旋转的Axis-angle representation)。

如果您正在使用正交投影,我假设您正在相机前进行2D旋转,通常是围绕Z轴(0,0,1)或可能(0,0,-1)。

您应该用glRotatef(circleRotation, 0, 0, 1)替换您的通话。

显然,如果没有纹理或不同的顶点颜色,你就不会注意到它。