我在书上看到的程序
glOrtho(-100*aspectratio, 100*aspectratio, -100.0, 100.0, 1.0, -1.0);
书上解释说,六个参数前两个是x轴最小坐标和最大坐标,中间两个是y轴,最后两个是z轴值.glRectf(-25.0f, 25.0f, 25.0f, -25.0f);
就可以画一个矩形.但是我只需要画一个2D的图形,所以我觉得后面z轴的参数无所谓的,我改成0,0.之后,结果显示的图像不正确,后两个参数0,0,显示就不正确,如果是其它值就能够显示正确.谁能帮我解释一下.

解决方案 »

  1.   

    glOrtho(GLdouble left,
                 GLdouble right,
                 GLdouble bottom,
                 GLdouble top,
                 GLdouble near,
                 GLdouble far)
    它创建一个平行视景体(就是一个长方体空间区域)。实际上这个函数的操作是创建一个正射投影矩阵,并且用这个矩阵乘以当前矩阵。其中近裁剪平面是一个矩形,矩形左下角点三维空间坐标是(left,bottom,-near),右上角点是(right,top,-near);远裁剪平面也是一个矩形,左下角点空间坐标是(left,bottom,-far),右上角点是(right,top,-far)。注意,near和far都是正值。只有在视景体里的物体才能显示出来,我感觉你最后两个参数取得有点问题,而且你改成0,0后,视景体深度没有了,整个视景体都被压成个平面了,当然就显示不正确了。
      

  2.   

    to hanjinchidm:
    我只是个初学者,你说的太深奥了,完全看不懂.
      

  3.   

    如果你只是绘制矩形,没有必要使用正投影。
    建议你用gluOrtho2D,这个方法可以二维坐标投影到屏幕上的矩阵,并把当前矩阵与它相乘。
    裁减区域为矩形:它的左下角坐标为(left,bottom)
    右上角为(right,top)
      

  4.   

    OpenGL中的三维物体都是显示在一个长方体区域中的,这个区域就是你用glOrtho或glPerspective来创建。具体大小由他们的参数决定,你绘出的三维物体只有包含在这个长方体中的部分才能够显示出来。这个长方体区域一般都在你客户区正后方。所以如果你把后两个参数设成0,那么这个显示三维物体的长方体区域就没有深度了,成一个平面了,你所绘的任何物体都不能包进长方体区域了。所以显示不正确。这只是我的观点。具体问题你还要自己找找,不过你既然初学,应该现看看OpenGL关于视景体方面的知识。看看OpenGL描述的计算机图形学吧,那个上面描述的比较详细。不过好多是数学描述的。
      

  5.   

    hanjinchidm 我不辞繁琐找回密码,登录上来,就为顶你一把
      

  6.   

    我顶!大家都像hanjinchidm一样,世界就和谐了!
      

  7.   

    晕  重发
     http://hi.baidu.com/starloooooove/album/item/7aeb614ee245b138b2de056a.html#IMG=7aeb614ee245b138b2de056a
      

  8.   

    计算机图形学没打好,学opengl\d3d会不知所以然的,回去补补课,再学GL吧。