首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

Direct几何流水线疑惑

2012-05-22 
求教:Direct几何流水线疑惑bool CreateTriangle(){Device-CreateVertexBuffer(3*sizeof(Vertex),D3DUSAGE

求教:Direct几何流水线疑惑
bool CreateTriangle()
{
Device->CreateVertexBuffer(3*sizeof(Vertex),D3DUSAGE_WRITEONLY,D3DFVF_XYZ,
D3DPOOL_MANAGED,&Triangle,0);

Vertex* vertex;
Triangle->Lock(0,0,(void**)&vertex,0);

vertex[0] = Vertex(-1.0f, 0.0f, 2.0f);
vertex[1] = Vertex( 0.0f, 1.0f, 2.0f);
vertex[2] = Vertex( 1.0f, 0.0f, 2.0f);

Triangle->Unlock();

D3DXMATRIX proj;

D3DXMatrixPerspectiveFovLH(
&proj, // result
D3DX_PI * 0.5f, // 90 - degrees
(float)Width / (float)Height, // aspect ratio
1.0f, // near plane
1000.0f); // far plane

Device->SetTransform(D3DTS_PROJECTION, &proj);

//
// Set wireframe mode render state.
//
Device->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);

return true;
}

以上代码是DirectX龙书上的一个小例子,按照龙书所说的流水线应该是世界变换-观察变换-投影变换-视口变换,从左到右,
执行完Triangle->Unlock();应该要调用D3DXMatrixLookAtLH进行观察变换的设置,为什么可以跳过观察变换直接进行投影变换

[解决办法]
相当于视点在原点,使用默认的观察矩阵。

热点排行