こんにちは、私は長い間、directx でスプライトをレンダリングするのと同じ方法を使用していますが、ここでは、画面をテクスチャでレンダリングしてから、画面上に大きなスプライトでレンダリングしています。
私が使用するカメラの場合: vUpVec=D3DXVECTOR3(0,1,0); vLookatPt=D3DXVECTOR3(0,0,0); vFromPt=D3DXVECTOR3(0,0,-1);
D3DXMatrixLookAtRH( &matView, &vFromPt, &vLookatPt, &vUpVec );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
D3DXMatrixOrthoRH( &matProj, 1,1, 0.5f, 20 );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
スプライトをレンダリングするには: CUSTOMVERTEX* v; spritevb->Lock( 0, 0, (void**)&v, 0 );
v[0].position = D3DXVECTOR3(-0.5f,-0.5f,0); v[0].u=0; v[0].v=1;
v[1].position = D3DXVECTOR3(-0.5f,0.5f,0); v[1].u=0; v[1].v=0;
v[2].position = D3DXVECTOR3(0.5f,-0.5f,0); v[2].u=1; v[2].v=1;
v[3].position = D3DXVECTOR3(0.5f,0.5f,0); v[3].u=1; v[3].v=0;
spritevb->Unlock();
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
これは非常に基本的で機能します。私のスプライトは画面いっぱいにレンダリングされます。しかし、よく見ると、画面を通る小さな対角線 (2 つのポリゴンの間) が色付きではなく、完全に配置されていないかのように見えます。
フィルタリングを考えて、すべてを削除しようとしましたが、何かを忘れているかもしれません...
ありがとう