2011-04-01 3 views
0

저는 Direct3D를 처음 접했고 웹캠에서 사진을 찍고 프로젝트 앞에 3D 객체를 그려 넣었습니다.2D Sprite (배경) 앞의 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,&center,&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에서는 삼각형을 볼 수 있지만 배경은 공백입니다.

의견이 있으십니까?

답변

1

빠른 수정으로 다음과 같이 깊이 테스트를 비활성화 할 수 있습니다.

이렇게하면 그려지는 프리미티브의 Z- 인덱스는 그려지는 순서를 반영해야합니다.

또한 PIX 디버깅 도구 (DirectX SDK와 함께 제공됨)를 사용해보십시오. 깊이 버퍼와 변형 된 정점에 대한 액세스로 각 그리기 호출을 개별적으로 디버깅 할 수 있기 때문에 그리기 불일치에 대한 첫 번째 호출 포트입니다.

2

이미지를 배경 용도로만 사용하려는 경우 객체 공간 (D3DXSPRITE_OBJECTSPACE)에 웹캠 이미지를 그릴 수 없습니다.

 D3DXVECTOR3 backPos (0.f, 0.f, 0.f); 
     pBackgroundSprite->Begin(D3DXSPRITE_ALPHABLEND); 
     pBackgroundSprite->Draw (pBackgroundTexture, 
          0, 
          0, 
          &backPos, 
          0xFFFFFFFF); 
     pBackgroundSprite->End(); 

당신이 찾고있는 것을 잘해야합니다.

관련 문제