游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1737|回复: 2

问个关于d3d视平面的初级问题

[复制链接]

3

主题

22

帖子

135

积分

注册会员

Rank: 2

积分
135
发表于 2008-9-3 22:15:00 | 显示全部楼层 |阅读模式
// Set the projection matrix
    FLOAT fAspect = 1;
    D3DXMatrixPerspectiveFovLH( &m_matProj, D3DX_PI/4, fAspect, 1.0f, -4.0f );
       
        // Set up the view matrix.
    D3DXMatrixLookAtLH( &m_matView, &D3DXVECTOR3( 0.0f, 0.0f, -4.0f ), //from
                &D3DXVECTOR3( 0.0f, 0.0f, 0.0f ), //at
                &D3DXVECTOR3( 0.0f, 1.0f, 0.0f ));//up

    pd3dDevice->SetTransform( D3DTS_VIEW,       &m_matView );
    pd3dDevice->SetTransform( D3DTS_PROJECTION, &m_matProj );

       
        // fill the vertex buffer with the data for a quad
    VERTEX Vertices[] =
    {
                { -1.0f,-1.0f, -3.0f, 0.0f, 1.0f, }, // x, y, z, tu, tv
                {  1.0f,-1.0f, -3.0f, 1.0f, 1.0f, },
                {  1.0f, 1.0f, -3.0f, 1.0f, 0.0f, },
                { -1.0f, 1.0f, -3.0f, 0.0f, 0.0f, },
    };

这段代码中视点在(0,0,-4),视距d3d固定为1,那么矩形纹理正好应该在视平面上。
设置视角为90°,应该整个纹理正好充满整个窗口,可是现在整个窗口是放大了的中间一小部分,这是为什么啊?
附件是完整代码,很小的。

sf_200893221510.rar

118.63 KB, 下载次数:

4

主题

28

帖子

32

积分

注册会员

Rank: 2

积分
32
发表于 2008-9-4 09:14:00 | 显示全部楼层

-

float scale=tanf(D3DX_PI/8);       

VERTEX Vertices[] =
{
{ -1.0f*scale,-1.0f*scale, -3.0f, 0.0f, 1.0f, }, // x, y, z, tu, tv
{  1.0f*scale,-1.0f*scale, -3.0f, 1.0f, 1.0f, },
{  1.0f*scale, 1.0f*scale, -3.0f, 1.0f, 0.0f, },
{ -1.0f*scale, 1.0f*scale, -3.0f, 0.0f, 0.0f, },
};

D3DX_PI/4应该是45度吧 [em10]

SDK上的图
sf_20089491355.gif

3

主题

22

帖子

135

积分

注册会员

Rank: 2

积分
135
 楼主| 发表于 2008-9-4 10:45:00 | 显示全部楼层

Re:问个关于d3d视平面的初级问题


明白了
谢谢slowhand
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 10:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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