一个关于OpenGL的入门问题,请高手指教,郁闷了好多天了!!

时间:2021-08-01 20:49:55
void display(void)
{

   glClear (GL_COLOR_BUFFER_BIT);

 
   glColor3f (1.0, 1.0, 1.0);
   glBegin(GL_POLYGON);
      glVertex3f (0.25, 0.25, 3);
      glVertex3f (0.75, 0.25, 3);
      glVertex3f (0.75, 0.75, 3);
      glVertex3f (0.25, 0.75, 3);
   glEnd();


   glFlush ();
}

void init (void) 
{

   glClearColor (0.0, 0.0, 0.0, 0.0);


   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho(0.0, 1.0, 0.0, 1.0, -2.0, -4.0);
}
如代码所示,我从原点向Z轴负方向看,而矩形画在了Z轴的正方向3个单位的地方,它在我定义的观察体内部。在我看来,这个矩形不应该显示出来,但是它却显示出来了。都说OpenGL同照相一样,如果一个物体在相机的后面,你怎么可能把它拍下来!!难道是我理解有误吗?请高手指教!!!!

8 个解决方案

#1


glOrtho
The glOrtho function multiplies the current matrix by an orthographic matrix.

void glOrtho(
  GLdouble left,    
  GLdouble right,   
  GLdouble bottom,  
  GLdouble top,     
  GLdouble near,    
  GLdouble far      
);
 
Parameters
left, right 
The coordinates for the left and right vertical clipping planes. 
bottom, top 
The coordinates for the bottom and top horizontal clipping planes. 
near, far 
The distances to the nearer and farther depth clipping planes. These distances are negative if the plane is to be behind the viewer. 
看看最后一段的说明。

#2


我知道,这两个裁剪平面在我的后面呀,但是问题是,如果物体在我的后面,我怎么可能 看到?OPenGL 不是和拍照一样吗?!!难道照相机能把自己后面的东西拍下来??

#3


楼主理解有误,上面程序并没有说你是在朝Z轴负方向看,而只是裁剪面在观察者的后面,裁剪面这时没起什么作用。

#4


默认情况下,眼睛不是朝Z轴负方向看吗?

#5


不是的,那看视点和模型点的相对位置。

#6


还是不太明白。我的视点在原点,而矩形平行于X-Y平面,Z坐标为3。所以它应该在我观察方向的后方呀。我的QQ:695238747,加我吧。帮帮我,谢谢了

#7


这种情况下的观察方向是朝向Z轴的正方向。

#8


书上说 如果不引用gluLookAt那么观察坐标系和世界坐标系相同,观察方向沿z轴负方向。

#1


glOrtho
The glOrtho function multiplies the current matrix by an orthographic matrix.

void glOrtho(
  GLdouble left,    
  GLdouble right,   
  GLdouble bottom,  
  GLdouble top,     
  GLdouble near,    
  GLdouble far      
);
 
Parameters
left, right 
The coordinates for the left and right vertical clipping planes. 
bottom, top 
The coordinates for the bottom and top horizontal clipping planes. 
near, far 
The distances to the nearer and farther depth clipping planes. These distances are negative if the plane is to be behind the viewer. 
看看最后一段的说明。

#2


我知道,这两个裁剪平面在我的后面呀,但是问题是,如果物体在我的后面,我怎么可能 看到?OPenGL 不是和拍照一样吗?!!难道照相机能把自己后面的东西拍下来??

#3


楼主理解有误,上面程序并没有说你是在朝Z轴负方向看,而只是裁剪面在观察者的后面,裁剪面这时没起什么作用。

#4


默认情况下,眼睛不是朝Z轴负方向看吗?

#5


不是的,那看视点和模型点的相对位置。

#6


还是不太明白。我的视点在原点,而矩形平行于X-Y平面,Z坐标为3。所以它应该在我观察方向的后方呀。我的QQ:695238747,加我吧。帮帮我,谢谢了

#7


这种情况下的观察方向是朝向Z轴的正方向。

#8


书上说 如果不引用gluLookAt那么观察坐标系和世界坐标系相同,观察方向沿z轴负方向。