我想得到当前的视口矩阵,用
GLint viewport[4];
glGetIntegerv(GL_VIEWPORT,viewport);后发现viewport[0]和viewport[1]是两个很大很大的数,而viewport[2]和viewport[3]的值也不正确,我已经在reshape函数中写了glViewport(0,0,w,h),不知道为什么。。

解决方案 »

  1.   

    这个函数表示你想要display出来的部分
      

  2.   

    那为什么glGetIntegerv没有返回正确的值呢?
      

  3.   

    需要先设置其他一些东西么?glGetIntegerv使用之前要注意些什么呢我大菜一个,望赐教
      

  4.   

    直接用不行的!
    你看这个,别人是怎么说的!
    http://chiefman.blog.hexun.com/5400795_d.html
      

  5.   

    这文章是说在用glGetIntegerv之前需要重新加载以前的模型变换矩阵么?为什么要这么做呢
      

  6.   

    viewport[0],viewport[1]应该是视口的宽和高,viewport[2],viewport[3]才是视口的坐标,你搞反了。
    MSDN:
    The params parameter returns four values: the x and y window coordinates of the viewport, followed by its width and height. See glViewport. 
      

  7.   

    OPENGL是个状态机,你要保证glGetIntegerv()的调用位置是处于有视口值有效的地方,比如放到Display()里。如果还是不行那你在检测一下w\h是否正确,窗口是否正常弹出。
      

  8.   

    OpenGL高手请进:http://topic.csdn.net/u/20100514/22/8d26175d-2306-4558-bfee-eaf3aaa5a544.html