我已成功绘制圆圈并对其应用翻译和缩放。当我将圆圈旋转仅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();
感谢阅读。
答案 0 :(得分:3)
glRotate
接收角度和一个3d矢量,它将是旋转的轴(Axis-angle representation)。
如果您正在使用正交投影,我假设您正在相机前进行2D旋转,通常是围绕Z轴(0,0,1)或可能(0,0,-1)。
您应该用glRotatef(circleRotation, 0, 0, 1)
替换您的通话。
显然,如果没有纹理或不同的顶点颜色,你就不会注意到它。