读书人

Direct几何流水线疑惑

发布时间: 2012-05-22 18:18:54 作者: rapoo

求教: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进行观察变换的设置,为什么可以跳过观察变换直接进行投影变换

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

读书人网 >网络游戏

热点推荐