GamePrograming/Direct3D
-
VMR9 다이렉트 쇼.GamePrograming/Direct3D 2010. 7. 15. 10:22
VMR9을 이용한 동영상 재생 클래스 DirectX9 VMR9(Video Mixing Renderer)을 사용한 동영상 재생 및 믹싱 클래스 Introduction 비디오 파일을 재생하기 위해 DirectShow Video Mixing Renderer9을 사용한 간단한 래퍼 클래스. DirectX9 에서는 멀티미디어 응용프로그램에서 새로운 비디오 렌더러를 사용할 수 있다. 하지만, 이 렌더러(VMR9)는 호환성 문제 때문에 기본 렌더러로 사용되지 않는다. Windows XP에서 기본 렌더러는 VMR7 이다. 이 렌더러는 하위버전 윈도우에 있던 것이다. 가장 큰 차이점은 성능과 오버레이 믹싱 능력: VMR7은 DirectDraw를 사용하고, VMR9은 그래픽카드의 3D가속 기능을 지원하는 Direct3D를..
-
픽킹(picking) - 1GamePrograming/Direct3D 2010. 7. 13. 11:40
이번 과제에서 화면상의 좌표를 변경하는데 있어 2D 평면이 주를 이루기 때문에 마우스 좌표를 광선으로 변경하는 것보다 오브젝트의 좌표를 화면상의 좌표로 변경시키는 함수를 제작했다. //----------------------------------------------------------------------------- // Name: D3DUtil_VecToScreen() // Desc: 벡터를 스크린 좌표로 변환한다 //----------------------------------------------------------------------------- D3DXVECTOR3 D3DUtil_VecToScreen( D3DXMATRIXA16& WVP, int width, int height, D3DX..
-
MFC Direct X 연동GamePrograming/Direct3D 2010. 7. 8. 17:28
* 현재 만들고 있는 간단한 시뮬레이션 툴 * * .NET 기준으로 설명.. * 기본적인 MFC 사용방법은 안다고 생각하며, 적습니다. * MFC 응용프로그램 프로젝트 생성 프로젝트의 옵션은 단일문서형식으로 만들면 되며, 기타 다른 옵션들은 사용자의 취양에 따라 선택 / 해제하면 됩니다. * MFC 응용프로그램으로 생성해본 윈도우 * * MFC에서 DirectX 초기화하기 뷰 클래스에서 속성 -> 재정의 -> OnInitialUpdate() 함수를 추가합니다. 이 함수에서 DirectX의 초기화를 하게 됩니다. * 뷰 클래스의 맴버변수 정의 * bool 형 m_bReady가 빠졌으므로, 추가해 주세요.. * OnInitialUpdate() 내부함수 구현... * 여기도 소스가 짤렸습니다.. m_bRead..
-
사원수를 이용한 로테이션GamePrograming/Direct3D 2009. 6. 25. 12:26
a.end = D3DXVECTOR3(0.0f, 0.0f, 400.0f); D3DXVECTOR3 dot3(1.0f, 0.0f, 0.0f); D3DXVECTOR3 vAxis(0,1,0); float fAngle = acos(D3DXVec3Dot(&a.end, &dot3) / (D3DXVec3Length(&a.end)* D3DXVec3Length(&dot3))); D3DXQUATERNION q; D3DXQuaternionRotationAxis(&q, &vAxis,fAngle); inverseRotate(q,a.end); void inverseRotate(D3DXQUATERNION& q, D3DXVECTOR3 & v) { D3DXQUATERNION myInverse; myInverse.x = -q.x;//*ms..
-
블렌딩GamePrograming/Direct3D 2009. 5. 4. 22:53
알파 테스트와 알파블렌딩에 대한 설명은 윗분이 설명해주신데로(DX 도움말에 있는데로)입니다. D3DRS_ALPHATESTENABLE가 TRUE로 설정되어 있을때 D3DRS_ALPHAFUNC이 D3DRS_ALPHAREF을 이용해서 테스트를 실행합니다.D3DRS_ALPHATESTENABLE가 FALSE이면 당연히 D3DRS_ALPHAFUNC, D3DRS_ALPHAREF는 설정안하셔도 됩니다.그리고 알파테스트를 통과했을 경우에 한해서 알파블렌딩이 일어납니다.참고로,알파테스트를 통해서 알파블렌딩할 영역을 줄여주는게 퍼포먼스에 도움이 됩니다 //알파테스팅 - Z축에 대한 알파가 먹히게 된다. m_pDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE); m_pDevice->..
-
ASE Animation [ *TM_ANIMATION FINAL ]GamePrograming/Direct3D 2009. 3. 26. 15:01
드디어 FINAL이다, 값들을 가져왔으면 이제부터 애니메이션을 돌려보자!! 케릭터의 변환 순서는 스케일, 로테이션, 이동 순서로 이루어진다.(이유는 책을 찾아 보시오 -_-) 먼저 로테이션 부터 살펴보겠다. (스케일은 제외) 1. 처음으로 로테이션의 키값이 있는지 없는지를 판별한다. ------------------------------------------------------------------------ 2-1. 키값이 없을 경우 2-1-1 키값이 없는데 부모가 있을 경우 TM_ROT = Mesh[i]->node.TM_Local; TM_ROT._41 = 0; TM_ROT._42 = 0; TM_ROT._43 = 0; TM_ROT._44 = 1.0f; 부모와 자기 NodeTM이 곱해진, Local T..
-
ASE Animation [ *TM_ANIMATION 2 ]GamePrograming/Direct3D 2009. 3. 26. 13:07
자 일단계 로컬 좌표로 변환 하는 과정은 끝났다. 이제부터는 또 다시 ASE 파일에서 애니메이션 키값 정보들을 불러 오는 작업이다. *CONTROL_POS_TRACK { *CONTROL_POS_SAMPLE 00.00000.0000-2.5816 *CONTROL_POS_SAMPLE 8000.00000.0000-2.3495 *CONTROL_POS_SAMPLE 16000.00000.0000-2.5361 *CONTROL_POS_SAMPLE 24000.00000.0000-2.3495 *CONTROL_POS_SAMPLE 32000.00000.0000-2.5361 } 일단 POSTION 정보를 보면, 맨처음값이 TICK 바로 시간 타임 값이다. 그리고 뒤에 3값이 이동할 좌표값인 X Z Y 값이다, (좌표계가 다르므로..
-
ASE Animation [ *TM_ANIMATION 1 ]GamePrograming/Direct3D 2009. 3. 26. 12:49
대망의 애니메이션이다 ㅠㅠ 뭐 설명은 없고 대충 찌그리고 있는데, -_- 선생하고싶었는데 선생하긴 글렀다 -_-; 일단 애니메이션을 하려면, 지금 월드 좌표로 지정되어있는 버텍스 좌표들을 전부 로컬좌표들로 바꿔줘야 한다. 로컬 좌표로 바꾸는 방법은 이소스를 참고 - D3DXMATRIXA16 inverse_World; D3DXMatrixInverse(&inverse_World, NULL, &p_Mesh->node.TM_Node); for(int i=0; iVertex_Size; i++) { D3DXVec3TransformCoord(&vertex[i].position, &vertex[i].position, &inverse_World); } 아까 Node TM에서 받은 메트릭스를 Inverse 시켜, 그값을 ..