游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2082|回复: 1

请教一个ProjectionMatrix的问题

[复制链接]

8

主题

79

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2010-7-2 14:46:00 | 显示全部楼层 |阅读模式
    D3DXMATRIX proj2;
    D3DXMatrixPerspectiveFovLH(
        &proj2,
        D3DX_PI * 0.5f, // 90 - degree
        (float)800 / (float)600,
        1.0f,
        1000.0f);
一个是用API算的,结果如下


另一个是自己计算的
   float yScale = 1 / tan( m_Fov / 2 );
    float xScale = yScale / m_Aspec;
    float p = m_Far / (m_Far - m_Near );
    memset( &m_ProjectionMatrix, 0, sizeof m_ProjectionMatrix );
    m_ProjectionMatrix._11 = xScale;
    m_ProjectionMatrix._22 = yScale;
    m_ProjectionMatrix._33 = p;
    m_ProjectionMatrix._43 = - m_Near * p;
    m_ProjectionMatrix._34 = p;

数据内容和上面那个用D3Dx api计算的一样


但是
当我调用
     m_Render->GetDevice()->SetTransform(D3DTS_PROJECTION, &proj);
      m_Render->GetDevice()->SetTransform(D3DTS_PROJECTION, &proj2);

的时候 自己计算的那个矩阵居然会出一个warn
Direct3D9: (WARN) :Cannot compute WNear and WFar from the supplied projection matrix

Direct3D9: (WARN) :Setting wNear to 0.0 and wFar to 1.0

请教大虾这个是什么问题

5

主题

14

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2010-7-3 08:58:00 | 显示全部楼层

Re: 请教一个ProjectionMatrix的问题

两个矩阵的_34不一样
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 14:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表