屏幕坐标和Opengl的坐标间是怎么转换的,小弟看了很久,也不太明白,求叫各们了。另外有什么好的关于OPENGL的书推荐以下,谢谢

解决方案 »

  1.   

    你要设置视图变换的方法,如下采用的是正交投影变换void DisplayView::OnSize(UINT nType, int cx, int cy) 
    {
    CView::OnSize(nType, cx, cy);
    GetWindowRect(&m_screen);
    /////////////////////////////////////////////////////////////////
    //添加窗口缩放时的图形变换函数
    if(cy>0&&cx>0)
    {
    m_factor=(GLdouble)cy/cx;
    glViewport(0, 0, cx, cy); // 恢复坐标系
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity(); // 设置正交投影
    glOrtho(-nRange, nRange, -nRange*m_factor, nRange*m_factor, -nRange*m_depth, nRange*m_depth);
    //glDepthRange(0,1); glMatrixMode(GL_MODELVIEW);
    }
    /////////////////////////////////////////////////////////////////
    }
    glViewport(0, 0, cx, cy);设置了视图的范围
    glOrtho(……)设置了你的视图能够显示的以OpenGL单位表示的一个长方体范围。
    具体细节你去看看书。
      

  2.   

    谢谢啦,可是在OnDraw函数中怎么写这样的代码,我看了引起程序,都没的啊,这是怎么回事?