Как нарисовать цилиндр по оси Y или X в OpenGL - PullRequest
8 голосов
/ 25 декабря 2011

Я просто хочу нарисовать цилиндр в opengl.Я нашел много образцов, но все они рисуют цилиндры по оси Z.Я хочу, чтобы они были в оси х или у.Как я могу это сделать.Код ниже - это код, рисующий цилиндр в направлении z, и я не хочу его

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

Ответы [ 2 ]

8 голосов
/ 25 декабря 2011

Вы можете использовать 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

4 голосов
/ 25 декабря 2011

При каждом рендеринге используйте 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  
}  
...