OpenGL перспективная проекция и местоположение камеры

Я рендерил сцену с некоторым изображением карты в OpenGL и использую широту карты как координаты напрямую. Так что моя сцена начинается не с 0,0, а с шириной и высотой. Хотя я могу видеть свой многоугольник (очень маленький), я не могу изменить масштаб, изменив значение z глаза в функции gluLookAt().

/*
 * My boundary for map quad with texture
 */
#define TOP 41.9061
#define BOTTOM 41.8546
#define LEFT -87.7012
#define RIGHT -87.6054

/*
 *  window size
 */
const unsigned int window_width = 1024;
const unsigned int window_height = 739;

/*
 * drawing a polygon with texture
 */
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, mainMapTextureId);
glBegin( GL_POLYGON );   
//bottom left
glTexCoord2f( 0.0f, 1.0f );
glVertex3f(LEFT, BOTTOM, 0.0);

//bottom right
glTexCoord2f( 1.0f, 1.0f ); 
glVertex3f(RIGHT, BOTTOM, 0.0);

//top right
glTexCoord2f( 1.0f, 0.0f );
glVertex3f(RIGHT, TOP, 0.0);

//top left
glTexCoord2f( 0.0f, 0.0f ); 
glVertex3f(LEFT, TOP, 0.0);
glEnd();


/*
 * Setting up the camera
 */
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat)window_width/(GLfloat)window_height, 0.0, 10.0);
gluLookAt( (float)(LEFT+RIGHT)/2.0, (float)(TOP+BOTTOM)/2.0, 1.0, 
               (float)(LEFT+RIGHT)/2.0, (float)(TOP+BOTTOM)/2.0, 0.0,
        0.0f, 1.0f, 0.0f);

1 ответ

Недопустимо иметь значение 0,0 для ближней плоскости gluPerspective. Попробуйте заменить его номинальным небольшим значением (0,1f).

Также всегда добавляйте вызов glGetError в ваш код в конце, он предупредит вас о проблемах.

Другие вопросы по тегам