在opengl中的窗口显示区域对应opengl的坐标系统是x,y,z的坐标值都是-1到1
但是我想要表达的是真实的现实世界,其坐标都很大,
我在做三维地形的可视化,空间中的任意一个点的高度一般都在100以上
我直接按照实际的坐标值代入计算,可是最后总是什么也画不出来
请问这是怎么回师
在这样的情况下,我该怎么半
谢谢各位

解决方案 »

  1.   

    使用 glScale。
    这个函数可以搞定任何尺度的模型。
      

  2.   

    请问为什么我在使用原始的数据(比如一个点坐标是200,300,500)
    这些点组成的一个区域,在渲染的时候cpu占用率总是100%我没有使用glscale我是用的gltranslatef
    请问这样不行吗
      

  3.   

    渲染肯定要占用CPU。至于占用多少,要看模型的复杂程度,和你的图形卡的能力。
    使用glScale的目的是当前变换的比例,时的模型能够显示在设备上。
      

  4.   

    把范围设大一点void CLoad3dsView::OnSize(UINT nType, int cx, int cy) 
    {
    CView::OnSize(nType, cx, cy);

    // TODO: Add your message handler code here
    /////////////////////////////////////////////////////////////////
    //添加窗口缩放时的图形变换函数
    glViewport(0,0,cx,cy);
    float aspect = (float)cx / (float)cy;
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    // glFrustum(-aspect, aspect, -1, 1, 1, 10000);
    gluPerspective(60.0f, aspect, 0.1, 100000);
    glMatrixMode(GL_MODELVIEW);
    /////////////////////////////////////////////////////////////////

    }
      

  5.   

    还是应该按比例缩放比较好,OPENGL里也都是相对坐标。
      

  6.   

    设定屏幕坐标与世界坐标比例来解决尺寸问题较好,glscale效率太低。
    OPENGL里用的是相对坐标,如用用绝对坐标,可以采用glPushMatrix,glPopMatrix来快速恢复当前坐标系。