Я новичок в Direct3D, и я участвовал в проекте, который снимал с веб-камеры и рисовал перед ней 3D-объекты.
Мне удалось отобразить изображения с веб-камеры в качестве фона с помощью ортогональной проекции.
//init matrix
D3DXMatrixOrthoLH(&Ortho, frameWidth, frameHeight, 0.0f, 100.0f);
//some code
D3DXVECTOR3 position = D3DXVECTOR3(0.0f, 0.0f, 100.0f);
g_pSprite->Begin(D3DXSPRITE_OBJECTSPACE);
g_pSprite->Draw(g_pTexture,NULL,¢er,&position,0xFFFFFFFF);
g_pSprite->End();
Затем я попытался вставить простой треугольник перед ним.Матрицы настроены следующим образом:
D3DXMATRIXA16 matWorld;
D3DXMatrixTranslation( &matWorld, 0.0f,0.0f,5.0f );
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
D3DXMATRIXA16 matProj;
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI / 4, 1.0f, 1.0f, 100.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
5.0 должно быть <100,0, и треугольник должен появляться перед изображениями.Однако он не появляется, если не установить позицию z в 0. В позиции 0 я вижу треугольник, но фон пустой. </p>
У вас есть какие-нибудь предложения?