OpenGl - gluShpere сидит на боку, как я могу повернуть его правильно? - PullRequest
0 голосов
/ 09 января 2012

Это моя сфера, но это не весь код

GLUquadric *earth = gluNewQuadric();
gluSphere( earth, 35.0, 36, 30);

Вышеуказанная сфера имеет текстуру земли, но она наклонена сбоку, как я могу это изменить?

больше код

    glRotatef(earthRotation,0.0f, 1.0f, 0.0f);

    gluSphere( earth, 35.0, 72, 72);

    earthRotation+= 0.3f;
    if(earthRotation > 360.0f)
    {
        earthRotation = 0.0f;
    }

я сделал это сейчас, это ответ (обновлено ниже)

glRotatef(earthRotation,0.0f, 1.0f, 0.0f);
        gluLookAt(0.00,0.00,1.0,//eye
        50.00,0.00,0.00,//centre
        0.00,0.00,1.00);//u 
        gluSphere( earth, 35.0, 72, 72);

        earthRotation+= 0.3f;
        if(earthRotation > 360.0f)
        {
            earthRotation = 0.0f;
        }

Ответы [ 2 ]

0 голосов
/ 09 января 2012

Вращения могут быть сложены, OPENGL выполнит вращения в обратном порядке (поэтому последний, который вы указали последним, выполняется первым.

Следующий код сначала вращает сферу по оси Z, чтобы поднять ее, а затем вращение земли выполняется на настроенном объекте.

glRotatef(earthRotation,0.0f, 1.0f, 0.0f); 
glRotatef( 90.0f,0.0f,0.0f,1.0f);
gluSphere( earth, 35.0, 72, 72); 

earthRotation+= 0.3f; 
if(earthRotation > 360.0f) 
{ 
    earthRotation = 0.0f; 
} 
0 голосов
/ 09 января 2012

Если вы выполняете рендеринг по осям X, Y, Z, а затем вызываете glRotatef по осям X, Y и Z с необходимыми смещениями, вы можете получить наклон Земли соответственно.

Похоже, вам, вероятно, нужно дополнительное вращение вокруг оси X.

На рисунке это выглядит так, как будто нужно повернуть на 90 градусов вокруг оси Z.

glRotatef (90f, 0.0f0,0f, 1,0f);

...