9

我只想在opengl中画一个圆柱体。我发现了很多样本​​,但所有样本都在 z 轴上绘制圆柱体。我希望它们在 x 或 y 轴上。我怎样才能做到这一点。下面的代码是在 z 方向上绘制圆柱体的代码,我不想要它

  GLUquadricObj *quadratic;
  quadratic = gluNewQuadric();
  gluCylinder(quadratic,0.1f,0.1f,3.0f,32,32);
4

2 回答 2

9

您可以使用glRotate(angle, x, y, z)旋转坐标系:

GLUquadricObj *quadratic;
quadratic = gluNewQuadric();
glRotatef(90.0f, 0.0f, 1.0f, 0.0f);
gluCylinder(quadratic,0.1f,0.1f,3.0f,32,32);

http://www.opengl.org/sdk/docs/man/xhtml/glRotate.xml

于 2011-12-25T19:11:58.027 回答
4

在每次渲染中使用glPushMatrix glRotatef绘制圆柱体并使用glPopMatrix.

前任。:glRotatef(yRotationAngle, 0.0f, 1.0f, 0.0f); // Rotate your object around the y axis on yRotationAngle radians

示例:OnRender()函数示例

void OnRender() {
  glClearColor(1.0f, 0.0f, 0.0f, 1.0f); // Clear the background
  glClear(GL_COLOR_BUFFER_BIT); //Clear the colour buffer
  glLoadIdentity(); // Load the Identity Matrix to reset our drawing locations

  glRotatef(yRotationAngle, 0.0f, 1.0f, 0.0f); // Rotate our object around the y axis on yRotationAngle radians

  // here *render* your cylinder (create and delete it in the other place. Not while rendering)
  gluCylinder(quadratic,0.1f,0.1f,3.0f,32,32);

  glFlush(); // Flush the OpenGL buffers to the window  
}  
于 2011-12-25T19:02:32.297 回答