现在我是计算得到的   
可以直接获得吗??void CPictureMosaicView::ResizeScene(int nWidth, int nHeight)
{
glViewport( 0, 0, nWidth, nHeight); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity();  GLfloat fScale = (GLfloat)nHeight / (GLfloat)nWidth;

if( nWidth <= nHeight)
{
glOrtho( -5.0
, 5.0
, -5.0 * fScale
, 5.0 * fScale
, -5.0
, 5.0
); 
m_fXScale = 10.0f / (float)nWidth;
m_fYScale = 10.0f*fScale / (float)nHeight;
}
else 
{
glOrtho( -5.0 * fScale
, 5.0 * fScale
, -5.0
, 5.0
, -5.0
, 5.0
);
m_fXScale = 10.0f*fScale / (float)nWidth;
m_fYScale = 10.0f / (float)nHeight;
}

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
}

解决方案 »

  1.   

    可以算出来的
    屏幕窗口大小是可以通过windows的api函数提取的
    在平行投影下opengl的可视范围在你的Ortho函数当中已经指定了
    他们之间作个比例计算就得到了
    ortho的left和right参数之间的差值 / 窗口的宽度, 就是水平方向的比例
    ortho的top和bottom参数之间的差值 / 窗口的高度, 就是垂直方向的比例
      

  2.   

    对于平行投影:
    获取当前投影矩阵 projection matrix 和模型视图矩阵 model view matrix,作矩阵相乘,对角线上的就是比例。模型中的数据经过这个比例投影到一个 1 x 1 大小的矩形上,叫做单位化设备。这个单位化设备由映射到窗口的像素坐标架上。对于透视投影:
    不存在通过矩阵计算的方法,你只能选择两个点,其所在直线平行于屏幕,然后投影到窗口,再计算比例。
      

  3.   

    没有api直接提供这样的功能
    必须自己计算而且象素是图像领域的东西,不是图形领域的内容,图形领域是矢量的
      

  4.   

    我的是平行投影对于平行投影:
    获取当前投影矩阵 projection matrix 和模型视图矩阵 model view matrix,作矩阵相乘,对角线上的就是比例。模型中的数据经过这个比例投影到一个 1 x 1 大小的矩形上,叫做单位化设备。这个单位化设备由映射到窗口的像素坐标架上。请问 相乘后得到矩阵
    a   ?   ?   ?
    ?   b   ?   ?
    ?   ?   c   ?
    ?   ?   ?   da b c d 都是什么比例啊 ??
      

  5.   

    d 是 1。
    a,b,c 是相同的,如果你的比例变换是三个方向相同的比例。
      

  6.   

    o  就是 (x y z w)的比例哦 
    谢谢alphapaopao(炮炮[www.alphasun.org]图形学) (