Получить камеру внутри моего скайбокса - PullRequest
0 голосов
/ 19 сентября 2010

Итак, я работаю над домашним заданием, и мне удалось создать свой скайбокс, и он выглядит правильно, единственная проблема в том, что моя камера находится за пределами скайбокса.

Я попробовал команду gluLook, думая, что, может быть, это сфокусирует меня в коробке, но это не сработало.Вот код, который у меня есть сейчас.Если бы кто-нибудь мог сообщить мне, что я делаю неправильно, я был бы очень признателен:

 gluLookAt(
       0,0,0,
       0,0,0
       0,1,0);
 glPushMatrix();
 //load identity matrix
 glLoadIdentity();

 //update x, y and z rotation directions
 glRotatef(currentRotation[1], 1.0, 0.0, 0.0); //x rotation
 glRotatef(currentRotation[2], 0.0, 1.0, 0.0); //y rotation
 glRotatef(currentRotation[3], 0.0, 0.0, 1.0); //z rotation
 /*
 //update scale of display
 glScalef(currentScaling[1],
    currentScaling[2],
    currentScaling[3]);*/

 //translate the image
 glTranslatef(currentTranslation[1],
     currentTranslation[2],
     currentTranslation[3]);

  /* Clear buffers */
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glEnable(GL_TEXTURE_2D); // Enable texturing from now on


  //front quadrant
  glBindTexture(GL_TEXTURE_2D,frontTextureId); // select which texture to use 
  glBegin(GL_QUADS);  
  glColor3f(1.0, 1.0, 1.0); 
  glTexCoord2f(1.0 ,0.0); glVertex3f(-0.5, 0.5, 0.5);
  glTexCoord2f(0.0 ,0.0); glVertex3f(0.5, 0.5, 0.5);
  glTexCoord2f(0.0 ,1.0); glVertex3f(0.5, 0.5, -0.5);
  glTexCoord2f(1.0 ,1.0); glVertex3f(-0.5, 0.5, -0.5);
  glEnd();

//left quadrant
  glBindTexture(GL_TEXTURE_2D, leftTextureId);
  glBegin(GL_QUADS);
  glColor3f(1.0, 1.0, 1.0);
  glTexCoord2f(0.0, 1.0); glVertex3f(-0.5, 0.5, -0.5);
  glTexCoord2f(1.0, 1.0); glVertex3f(-0.5, -0.5, -0.5);
  glTexCoord2f(1.0, 0.0); glVertex3f(-0.5, -0.5, 0.5);
  glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, 0.5, 0.5);
  glEnd();

  //back quadrant
  glBindTexture(GL_TEXTURE_2D, backTextureId);
  glBegin(GL_QUADS);
  glColor3f(1.0, 1.0, 1.0);
  glTexCoord2f(1.0, 1.0); glVertex3f(0.5, -0.5, -0.5);
  glTexCoord2f(1.0, 0.0); glVertex3f(0.5, -0.5, 0.5);
  glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, -0.5, 0.5);
  glTexCoord2f(0.0, 1.0); glVertex3f(-0.5, -0.5, -0.5);
  glEnd();

  //right quadrant
  glBindTexture(GL_TEXTURE_2D, rightTextureId);
  glBegin(GL_QUADS);
  glColor3f(1.0, 1.0, 1.0);
  glTexCoord2f(1.0, 1.0); glVertex3f(0.5, 0.5, -0.5);
  glTexCoord2f(1.0, 0.0); glVertex3f(0.5, 0.5, 0.5);
  glTexCoord2f(0.0, 0.0); glVertex3f(0.5, -0.5, 0.5);
  glTexCoord2f(0.0, 1.0); glVertex3f(0.5, -0.5, -0.5);
  glEnd();

  //up quadrant
  glBindTexture(GL_TEXTURE_2D, upTextureId);
  glBegin(GL_QUADS);
  glColor3f(1.0, 1.0, 1.0);
  glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, -0.5, 0.5);
  glTexCoord2f(1.0, 0.0); glVertex3f(-0.5, 0.5, 0.5);
  glTexCoord2f(1.0, 1.0); glVertex3f(0.5, 0.5, 0.5);
  glTexCoord2f(0.0, 1.0); glVertex3f(0.5, -0.5, 0.5);
  glEnd();

  //down quadrant
  glBindTexture(GL_TEXTURE_2D, downTextureId);
  glBegin(GL_QUADS);
  glColor3f(1.0, 1.0, 1.0);
  glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, -0.5, -0.5);
  glTexCoord2f(0.0, 1.0); glVertex3f(-0.5, 0.5, -0.5);
  glTexCoord2f(1.0, 1.0); glVertex3f(0.5, 0.5, -0.5);
  glTexCoord2f(1.0, 0.0); glVertex3f(0.5, -0.5, -0.5);
  glEnd();

Спасибо за любую помощь, которую вы можете оказать!

Ответы [ 3 ]

1 голос
/ 09 апреля 2011

Я думаю, что ваша проблема в glulookat

попробуйте с этими значениями

 gluLookAt(0.0, 0.0 , 2.0 , 
            0.0, 0.0, 0.0, 
            0.0, 1.0, 0.0);
0 голосов
/ 19 сентября 2010

Ну, у вас там есть glTranslate() звонок, так что, если вы не передаете ему нули, возможно, поэтому вы не в поле.

0 голосов
/ 19 сентября 2010

Несколько проблем с первого взгляда: аргументы gluLookAt: первые три - это положение камеры, следующие три - это цель камеры - они не должны быть одинаковыми, у камеры должен быть действительный вектор направления.Далее, ваш скайбокс имеет размер всего 1,0 единицы - увеличьте его.Используйте константу вместо 0,5 везде, чтобы вы могли управлять ею в одном месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...