Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL透视投影与摄像机定位_Opengl_Glulookat - Fatal编程技术网

OpenGL透视投影与摄像机定位

OpenGL透视投影与摄像机定位,opengl,glulookat,Opengl,Glulookat,我在OpenGL中使用一些地图图像渲染场景,并直接使用地图的纬度、经度作为坐标。所以我的场景不是从0,0开始,而是上升到宽度和高度。虽然我可以看到我的多边形(非常小),但我无法通过在gluLookAt()中更改眼睛的z值进行缩放 对于透视图的近平面,值为0.0是不合法的。尝试将其替换为标称小值(0.1f) 另外,在代码的最后总是放一个glGetError调用,它会提醒您出现问题 /* * My boundary for map quad with texture */ #define TOP

我在OpenGL中使用一些地图图像渲染场景,并直接使用地图的纬度、经度作为坐标。所以我的场景不是从0,0开始,而是上升到宽度和高度。虽然我可以看到我的多边形(非常小),但我无法通过在gluLookAt()中更改眼睛的z值进行缩放


对于透视图的近平面,值为0.0是不合法的。尝试将其替换为标称小值(0.1f)

另外,在代码的最后总是放一个glGetError调用,它会提醒您出现问题

/*
 * 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);